
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

CURLcode Curl_readwrite(connectdata *conn,Curl_easy *data,_Bool *done,_Bool *comeback)

{
  char **ppcVar1;
  int *piVar2;
  curltime *pcVar3;
  curl_off_t *pcVar4;
  undefined4 uVar5;
  contenc_writer *writer;
  void *pvVar6;
  curl_off_t cVar7;
  ssize_t sVar8;
  _Bool _Var9;
  char cVar10;
  uint uVar11;
  CURLcode CVar12;
  _func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *p_Var13;
  uint uVar14;
  uint uVar15;
  CHUNKcode code;
  timediff_t tVar16;
  char *pcVar17;
  curl_socket_t writefd;
  size_t sVar18;
  int iVar19;
  curl_socket_t readfd0;
  int iVar20;
  anon_enum_32 aVar21;
  Curl_handler *pCVar22;
  char *pcVar23;
  int iVar24;
  int in_GS_OFFSET;
  bool bVar25;
  uint uVar26;
  ssize_t *local_74;
  uint local_6c;
  int local_60;
  uint local_5c;
  uint local_54;
  int local_50;
  uint local_4c;
  int local_48;
  int local_40;
  time_t local_34;
  int iStack_30;
  _Bool readmore;
  _Bool stop_reading;
  ssize_t nread;
  int local_20;
  undefined4 uStack_14;
  
  readfd0 = -1;
  uStack_14 = 0x3986e;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_74 = (ssize_t *)conn->cselect_bits;
  conn->cselect_bits = 0;
  uVar14 = (data->req).keepon;
  if ((uVar14 & 0x15) == 1) {
    readfd0 = conn->sockfd;
  }
  writefd = -1;
  if ((uVar14 & 0x2a) == 2) {
    writefd = conn->writesockfd;
  }
  if ((conn->data->state).drain == 0) {
    if (local_74 == (ssize_t *)0x0) {
      local_74 = (ssize_t *)Curl_socket_check(readfd0,-1,writefd,0);
    }
  }
  else {
    local_74 = (ssize_t *)((uint)local_74 | 1);
  }
  if (local_74 == (ssize_t *)0x4) {
    CVar12 = CURLE_SEND_ERROR;
    Curl_failf(data,"select/poll returned error");
    goto LAB_00039d70;
  }
  uVar14 = (data->req).keepon;
  local_5c = uVar14 & 1;
  if ((local_5c == 0) || ((((uint)local_74 & 1) == 0 && ((conn->bits).stream_was_rewound == false)))
     ) {
    if (((uVar14 & 2) != 0) && (local_5c = 0, ((uint)local_74 & 2) != 0)) {
LAB_00039b2b:
      if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) &&
         (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&
          (int)(data->req).writebytecount == 0)) {
        Curl_pgrsTime(data,TIMER_STARTTRANSFER);
      }
      sVar18 = (data->req).upload_present;
      if (sVar18 == 0) {
        CVar12 = Curl_get_upload_buffer(data);
        if (CVar12 != CURLE_OK) goto LAB_00039d70;
        (data->req).upload_fromhere = (data->state).ulbuf;
        if ((data->req).upload_done == false) {
          pvVar6 = (data->req).protop;
          if (((data->req).exp100 == EXP100_SENDING_REQUEST) && (*(int *)((int)pvVar6 + 0x1a0) == 2)
             ) {
            piVar2 = &(data->req).keepon;
            *piVar2 = *piVar2 & 0xfffffffd;
            (data->req).exp100 = EXP100_AWAITING_CONTINUE;
            Curl_now();
            (data->req).start100.tv_sec = local_34;
            (data->req).start100.tv_usec = iStack_30;
            Curl_expire(data,(data->set).expect_100_timeout,EXPIRE_100_TIMEOUT);
            goto LAB_00039ea1;
          }
          bVar25 = false;
          if ((conn->handler->protocol & 0x40003) != 0) {
            bVar25 = *(int *)((int)pvVar6 + 0x1a0) == 1;
          }
          CVar12 = Curl_fillreadbuffer(conn,(data->set).upload_buffer_size,(size_t *)&nread);
          sVar8 = nread;
          if (CVar12 != CURLE_OK) goto LAB_00039d70;
          local_6c = nread;
          if (nread == 0) goto LAB_0003a898;
          if (0 < nread) {
            (data->req).upload_present = nread;
            if ((!bVar25) && (((data->set).prefer_ascii != false || ((data->set).crlf != false)))) {
              pcVar17 = (data->state).scratch;
              if (pcVar17 == (char *)0x0) {
                pcVar17 = (char *)(*Curl_cmalloc)((data->set).upload_buffer_size * 2);
                (data->state).scratch = pcVar17;
                if (pcVar17 == (char *)0x0) {
                  CVar12 = CURLE_OUT_OF_MEMORY;
                  Curl_failf(data,"Failed to alloc scratch buffer!",conn,conn);
                  goto LAB_00039d70;
                }
              }
              iVar20 = 0;
              iVar24 = 0;
              while( true ) {
                iVar19 = iVar24 + 1;
                cVar10 = (data->req).upload_fromhere[iVar20];
                if (cVar10 == '\n') {
                  pcVar17[iVar24] = '\r';
                  (data->state).scratch[iVar24 + 1] = '\n';
                  iVar19 = iVar24 + 2;
                  if ((data->set).crlf == false) {
                    uVar14 = *(uint *)((int)&(data->state).infilesize + 4);
                    uVar15 = (uint)(data->state).infilesize;
                    if ((uVar14 & uVar15) != 0xffffffff) {
                      *(uint *)&(data->state).infilesize = uVar15 + 1;
                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)
                      ;
                    }
                  }
                }
                else {
                  pcVar17[iVar24] = cVar10;
                }
                iVar20 = iVar20 + 1;
                if (sVar8 == iVar20) break;
                pcVar17 = (data->state).scratch;
                iVar24 = iVar19;
              }
              if (sVar8 != iVar19) {
                pcVar17 = (data->state).scratch;
                (data->req).upload_present = iVar19;
                (data->req).upload_fromhere = pcVar17;
                local_6c = iVar19;
              }
            }
            if (((conn->handler->protocol & 0x30000) != 0) &&
               (CVar12 = Curl_smtp_escape_eob(conn,local_6c), CVar12 != CURLE_OK))
            goto LAB_00039d70;
            sVar18 = (data->req).upload_present;
            goto LAB_00039b53;
          }
          uVar14 = (data->req).keepon;
        }
        else {
LAB_0003a898:
          uVar14 = (data->req).keepon;
          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;
        }
        (data->req).keepon = uVar14 & 0xfffffffd;
        Curl_http2_done_sending(conn);
        if (((conn->bits).rewindaftersend != false) &&
           (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;
      }
      else {
LAB_00039b53:
        local_74 = &nread;
        CVar12 = Curl_write(conn,conn->writesockfd,(data->req).upload_fromhere,sVar18,local_74);
        if (CVar12 != CURLE_OK) goto LAB_00039d70;
        if ((data->set).verbose != false) {
          Curl_debug(data,CURLINFO_DATA_OUT,(data->req).upload_fromhere,nread);
        }
        pcVar4 = &(data->req).writebytecount;
        iVar24 = nread + (int)*pcVar4;
        iVar20 = (nread >> 0x1f) + *(int *)((int)&(data->req).writebytecount + 4) +
                 (uint)CARRY4(nread,(uint)*pcVar4);
        _Var9 = (data->req).upload_chunky;
        *(int *)&(data->req).writebytecount = iVar24;
        *(int *)((int)&(data->req).writebytecount + 4) = iVar20;
        if (((_Var9 == false) || ((data->req).forbidchunk != false)) &&
           (iVar20 == *(int *)((int)&(data->state).infilesize + 4) &&
            iVar24 == (int)(data->state).infilesize)) {
          (data->req).upload_done = true;
          Curl_infof(data,"We are completely uploaded and fine\n");
        }
        iVar24 = (data->req).upload_present;
        if (iVar24 == nread) {
          CVar12 = Curl_get_upload_buffer(data);
          if (CVar12 != CURLE_OK) goto LAB_00039d70;
          pcVar17 = (data->state).ulbuf;
          (data->req).upload_present = 0;
          (data->req).upload_fromhere = pcVar17;
          if ((data->req).upload_done != false) {
            piVar2 = &(data->req).keepon;
            *piVar2 = *piVar2 & 0xfffffffd;
            Curl_http2_done_sending(conn);
            if (((conn->bits).rewindaftersend != false) &&
               (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;
          }
        }
        else {
          ppcVar1 = &(data->req).upload_fromhere;
          *ppcVar1 = *ppcVar1 + nread;
          (data->req).upload_present = iVar24 - nread;
        }
        Curl_pgrsSetUploadCounter(data,(data->req).writebytecount);
      }
LAB_00039c0b:
      Curl_now();
      (data->req).now.tv_sec = local_34;
      (data->req).now.tv_usec = iStack_30;
      goto LAB_00039ecb;
    }
    Curl_now();
    (data->req).now.tv_sec = local_34;
    (data->req).now.tv_usec = iStack_30;
LAB_00039c5c:
    if (((data->req).exp100 == EXP100_AWAITING_CONTINUE) &&
       (tVar16 = Curl_timediff((data->req).now,(data->req).start100),
       (data->set).expect_100_timeout <= tVar16)) {
      piVar2 = &(data->req).keepon;
      *piVar2 = *piVar2 | 2;
      (data->req).exp100 = EXP100_SEND_DATA;
      Curl_expire_done(data,EXPIRE_100_TIMEOUT);
      Curl_infof(data,"Done waiting for 100-continue\n");
    }
LAB_00039c69:
    iVar24 = Curl_pgrsUpdate(conn);
  }
  else {
    readmore = false;
    local_6c = 0;
    *done = false;
    local_60 = 100;
    *comeback = false;
    local_40 = 0;
    do {
      uVar14 = (data->set).buffer_size;
      if (((conn->handler->protocol & 3) == 0) || (conn->httpversion != 0x14)) {
        uVar15 = *(uint *)((int)&(data->req).size + 4);
        uVar26 = (uint)(data->req).size;
        if (((uVar15 & uVar26) != 0xffffffff) &&
           (((data->req).header == false &&
            (pcVar4 = &(data->req).bytecount, uVar11 = uVar26 - (int)*pcVar4,
            (int)((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -
                 (uint)(uVar26 < (uint)*pcVar4)) < (int)(uint)(uVar11 < uVar14))))) {
          uVar14 = uVar11;
        }
      }
      if (uVar14 != 0) {
        CVar12 = Curl_read(conn,conn->sockfd,(data->req).buf,uVar14,&nread);
        if (CVar12 != CURLE_AGAIN) {
          if (CVar12 == CURLE_OK) {
            if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0)
               && (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&
                   (int)(data->req).writebytecount == 0)) goto LAB_00039f9b;
            goto LAB_000399eb;
          }
          goto LAB_00039d70;
        }
        local_5c = local_6c;
        uVar14 = (data->req).keepon;
LAB_0003a00e:
        if (local_60 != 0) goto joined_r0x0003a020;
        goto LAB_00039e5f;
      }
      nread = 0;
      if (*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) {
        if (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&
            (int)(data->req).writebytecount == 0) {
LAB_00039f9b:
          Curl_pgrsTime(data,TIMER_STARTTRANSFER);
          if ((data->req).exp100 != EXP100_SEND_DATA) {
            Curl_now();
            (data->req).start100.tv_sec = local_34;
            (data->req).start100.tv_usec = iStack_30;
          }
        }
LAB_000399eb:
        if (nread == 0) goto LAB_00039f28;
        if (nread < 1) goto LAB_0003a030;
        local_6c = 0;
        iVar24 = nread;
      }
      else {
LAB_00039f28:
        if ((data->req).bodywrites != 0) {
LAB_0003a030:
          uVar14 = (data->req).keepon & 0xfffffffe;
          (data->req).keepon = uVar14;
          goto LAB_0003a00e;
        }
        iVar24 = 0;
        local_6c = local_5c;
      }
      (data->req).buf[iVar24] = '\0';
      (data->req).str = (data->req).buf;
      p_Var13 = conn->handler->readwrite;
      if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0) {
        CVar12 = (*p_Var13)(data,conn,&nread,&readmore);
        if (CVar12 == CURLE_OK) {
          if (readmore == false) goto LAB_00039a4c;
LAB_0003a008:
          uVar14 = (data->req).keepon;
          goto LAB_0003a00e;
        }
        goto LAB_00039d70;
      }
LAB_00039a4c:
      if ((data->req).header != false) {
        stop_reading = false;
        CVar12 = Curl_http_readwrite_headers(data,conn,&nread,&stop_reading);
        if (CVar12 != CURLE_OK) goto LAB_00039d70;
        p_Var13 = conn->handler->readwrite;
        if (((p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)
            && ((int)(uint)((int)(data->req).maxdownload != 0) <=
                -*(int *)((int)&(data->req).maxdownload + 4))) && (0 < nread)) {
          CVar12 = (*p_Var13)(data,conn,&nread,&readmore);
          if (CVar12 != CURLE_OK) goto LAB_00039d70;
          if (readmore != false) goto LAB_0003a008;
        }
        if (stop_reading == false) {
          if (((data->req).str != (char *)0x0) && ((data->req).header == false)) goto LAB_00039a67;
          goto LAB_00039df2;
        }
        if (0 < nread) {
          _Var9 = Curl_pipeline_wanted(conn->data->multi,1);
          if (_Var9) {
            Curl_infof(data,"Rewinding stream by : %zd bytes on url %s (zero-length body)\n",nread,
                       (data->state).up.path);
            (conn->bits).stream_was_rewound = true;
            conn->read_pos = conn->read_pos - nread;
          }
          else {
            Curl_infof(data,
                       "Excess found in a non pipelined read: excess = %zd url = %s (zero-length body)\n"
                       ,nread,(data->state).up.path);
          }
        }
        goto LAB_0003a008;
      }
      if ((data->req).str == (char *)0x0) {
LAB_00039df2:
        pCVar22 = conn->handler;
LAB_00039df8:
        p_Var13 = pCVar22->readwrite;
        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0) {
LAB_00039dff:
          if ((local_40 != 0) && ((conn->bits).stream_was_rewound == false)) {
            pcVar17 = (data->req).buf + (data->set).buffer_size;
            pcVar23 = (data->req).str + nread;
            (data->req).str = pcVar23;
            nread = (int)pcVar17 - (int)pcVar23;
            if (pcVar23 + local_40 <= pcVar17) {
              nread = local_40;
            }
            CVar12 = (*p_Var13)(data,conn,&nread,&readmore);
            if (CVar12 == CURLE_OK) {
              uVar14 = (data->req).keepon;
              if (readmore != false) {
                uVar14 = uVar14 | 1;
                (data->req).keepon = uVar14;
              }
              goto LAB_0003a00e;
            }
            goto LAB_00039d70;
          }
        }
        uVar14 = (data->req).keepon;
        if (local_6c != 0) {
          uVar14 = uVar14 & 0xfffffffe;
          (data->req).keepon = uVar14;
        }
      }
      else {
LAB_00039a67:
        if ((0 < nread) || (local_6c != 0)) {
          if ((data->set).opt_no_body != false) {
            CVar12 = CURLE_WEIRD_SERVER_REPLY;
            Curl_conncontrol(conn,2);
            *done = true;
            goto LAB_00039d70;
          }
          iVar24 = (data->req).bodywrites;
          if (local_6c == 0 && iVar24 == 0) {
            if ((conn->handler->protocol & 0x40003) == 0) {
              iVar24 = 0;
            }
            else {
              if ((data->req).newurl != (char *)0x0) {
                if ((conn->bits).close != false) {
                  piVar2 = &(data->req).keepon;
                  *piVar2 = *piVar2 & 0xfffffffe;
                  CVar12 = CURLE_OK;
                  *done = true;
                  goto LAB_00039d70;
                }
                (data->req).ignorebody = true;
                Curl_infof(data,"Ignoring the response-body\n");
              }
              iVar24 = *(int *)((int)&(data->state).resume_from + 4);
              iVar20 = (int)(data->state).resume_from;
              if ((((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&
                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false)) {
                if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&
                   (iVar20 == (int)(data->req).size)) {
                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);
                  CVar12 = CURLE_OK;
                  Curl_conncontrol(conn,1);
                  piVar2 = &(data->req).keepon;
                  *piVar2 = *piVar2 & 0xfffffffe;
                  *done = true;
                }
                else {
                  CVar12 = CURLE_RANGE_ERROR;
                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."
                             ,conn,conn);
                }
                goto LAB_00039d70;
              }
              if ((((data->set).timecondition != CURL_TIMECOND_NONE) &&
                  ((data->state).range == (char *)0x0)) &&
                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)) {
                *done = true;
                (data->info).httpcode = 0x130;
                Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);
                Curl_conncontrol(conn,1);
                goto LAB_00039e7c;
              }
              iVar24 = (data->req).bodywrites;
            }
          }
          _Var9 = (data->set).verbose;
          (data->req).bodywrites = iVar24 + 1;
          if (_Var9 == false) {
LAB_0003a05d:
            if ((data->req).chunk != false) {
LAB_0003a280:
              code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread);
              if (CHUNKE_OK < code) {
                if (code == CHUNKE_WRITE_ERROR) {
                  CVar12 = CURLE_WRITE_ERROR;
                  Curl_failf(data,"Failed writing data");
                }
                else {
                  CVar12 = CURLE_RECV_ERROR;
                  pcVar17 = Curl_chunked_strerror(code);
                  Curl_failf(data,"%s in chunked-encoding",pcVar17);
                }
                goto LAB_00039d70;
              }
              if (code == CHUNKE_STOP) {
                sVar18 = (conn->chunk).dataleft;
                piVar2 = &(data->req).keepon;
                *piVar2 = *piVar2 & 0xfffffffe;
                if (sVar18 != 0) {
                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);
                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);
                  if (_Var9) {
                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);
                    conn->read_pos = conn->read_pos - sVar18;
                    (conn->bits).stream_was_rewound = true;
                  }
                }
              }
            }
            local_54 = (uint)(data->req).bytecount;
            local_50 = *(int *)((int)&(data->req).bytecount + 4);
            if (((data->req).badheader == CURLDIGESTALGO_MD5SESS) &&
               ((data->req).ignorebody == false)) {
              uVar14 = (data->req).hbuflen;
              bVar25 = CARRY4(local_54,uVar14);
              local_54 = local_54 + uVar14;
              local_50 = local_50 + (uint)bVar25;
              *(uint *)&(data->req).bytecount = local_54;
              *(int *)((int)&(data->req).bytecount + 4) = local_50;
            }
          }
          else {
            if (((data->req).badheader == CURLDIGESTALGO_MD5) ||
               (Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),
               (data->req).badheader == CURLDIGESTALGO_MD5SESS)) {
              Curl_debug(data,CURLINFO_DATA_IN,(data->req).str,nread);
              goto LAB_0003a05d;
            }
            if ((data->req).chunk != false) goto LAB_0003a280;
            local_54 = (uint)(data->req).bytecount;
            local_50 = *(int *)((int)&(data->req).bytecount + 4);
          }
          uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);
          local_4c = (uint)(data->req).maxdownload;
          uVar15 = nread + local_54;
          local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);
          if (((uVar14 & local_4c) != 0xffffffff) &&
             ((SBORROW4(local_48,uVar14) != SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c)))
              == (int)((local_48 - uVar14) - (uint)(uVar15 < local_4c)) < 0)) {
            iVar24 = nread + local_54;
            local_40 = iVar24 - local_4c;
            if ((local_40 != 0) && ((data->req).ignorebody == false)) {
              _Var9 = Curl_pipeline_wanted(conn->data->multi,1);
              if (_Var9) {
                Curl_infof(data,
                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"
                           ,local_40,(data->state).up.path,(int)(data->req).size,
                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,
                           *(undefined4 *)((int)&(data->req).maxdownload + 4),
                           (int)(data->req).bytecount,
                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread);
                (conn->bits).stream_was_rewound = true;
                conn->read_pos = conn->read_pos + (local_4c - iVar24);
              }
              else {
                Curl_infof(data,
                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"
                           ,local_40,(int)(data->req).size,
                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,
                           *(undefined4 *)((int)&(data->req).maxdownload + 4),
                           (int)(data->req).bytecount,
                           *(undefined4 *)((int)&(data->req).bytecount + 4));
              }
              local_4c = (uint)(data->req).maxdownload;
              local_50 = *(int *)((int)&(data->req).bytecount + 4);
              local_54 = (uint)(data->req).bytecount;
            }
            nread = local_4c - local_54;
            if (nread < 0) {
              nread = 0;
              local_4c = local_54;
              local_48 = local_50;
            }
            else {
              local_4c = nread + local_54;
              local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);
            }
            piVar2 = &(data->req).keepon;
            *piVar2 = *piVar2 & 0xfffffffe;
            uVar15 = local_4c;
          }
          local_4c = uVar15;
          *(uint *)&(data->req).bytecount = local_4c;
          *(int *)((int)&(data->req).bytecount + 4) = local_48;
          Curl_pgrsSetDownloadCounter(data,CONCAT44(local_48,local_4c));
          if ((data->req).chunk != false) goto LAB_00039df2;
          aVar21 = (data->req).badheader;
          if ((nread == 0 && aVar21 == CURLDIGESTALGO_MD5) && local_6c == 0) goto LAB_0003a318;
          cVar10 = (data->req).ignorebody;
          if (aVar21 == CURLDIGESTALGO_MD5) {
LAB_0003a358:
            if (((conn->data->set).http_ce_skip == false) &&
               (writer = (data->req).writer_stack, writer != (contenc_writer *)0x0)) {
              if (cVar10 == '\0') {
                CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);
                goto LAB_0003a392;
              }
              goto LAB_0003a1c7;
            }
            pCVar22 = conn->handler;
            if (cVar10 == '\0') {
              pcVar17 = (data->req).str;
              if ((pCVar22->protocol & 0xc000) == 0) {
                CVar12 = Curl_client_write(conn,1,pcVar17,nread);
              }
              else {
                CVar12 = Curl_pop3_write(conn,pcVar17,nread);
              }
LAB_0003a392:
              (data->req).badheader = CURLDIGESTALGO_MD5;
              if (CVar12 == CURLE_OK) goto LAB_00039df2;
              goto LAB_00039d70;
            }
          }
          else {
            if ((_Bool)cVar10 == false) {
              uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);
              uVar15 = (uint)(data->req).maxdownload;
              uVar26 = (data->req).hbuflen;
              if (((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26)))
              {
                uVar26 = uVar15;
              }
              CVar12 = Curl_client_write(conn,1,(data->state).headerbuff,uVar26);
              if (CVar12 != CURLE_OK) goto LAB_00039d70;
              aVar21 = (data->req).badheader;
            }
            if ((uint)aVar21 < 2) {
              cVar10 = (data->req).ignorebody;
              goto LAB_0003a358;
            }
LAB_0003a1c7:
            pCVar22 = conn->handler;
          }
          (data->req).badheader = CURLDIGESTALGO_MD5;
          goto LAB_00039df8;
        }
LAB_0003a318:
        pCVar22 = conn->handler;
        p_Var13 = pCVar22->readwrite;
        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)
        goto LAB_00039dff;
        uVar14 = (data->req).keepon;
      }
      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;
      if ((((pCVar22->protocol & 0x30) == 0) && (_Var9 = Curl_ssl_data_pending(conn,0), !_Var9)) &&
         (((conn->handler->protocol & 3) == 0 || (conn->httpversion != 0x14)))) goto LAB_0003a008;
      local_60 = local_60 + -1;
      local_6c = local_5c;
    } while (local_60 != -1);
    uVar14 = (data->req).keepon;
LAB_00039e5f:
    conn->cselect_bits = 1;
    *comeback = true;
joined_r0x0003a020:
    if (((uVar14 & 3) == 2) && ((conn->bits).close != false)) {
      Curl_infof(data,"we are done reading and this is set to close, stop send\n");
      piVar2 = &(data->req).keepon;
      *piVar2 = *piVar2 & 0xfffffffd;
      if (*done != false) {
LAB_0003a468:
        CVar12 = CURLE_OK;
        goto LAB_00039d70;
      }
    }
    else {
LAB_00039e7c:
      if (*done != false) goto LAB_0003a468;
      if ((((data->req).keepon & 2) != 0) && (((uint)local_74 & 2) != 0)) goto LAB_00039b2b;
    }
LAB_00039ea1:
    Curl_now();
    (data->req).now.tv_sec = local_34;
    (data->req).now.tv_usec = iStack_30;
    if (local_5c == 0) goto LAB_00039c5c;
LAB_00039ecb:
    pcVar4 = (data->req).bytecountp;
    if (pcVar4 != (curl_off_t *)0x0) {
      uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4);
      *(int *)pcVar4 = (int)(data->req).bytecount;
      *(undefined4 *)((int)pcVar4 + 4) = uVar5;
    }
    pcVar4 = (data->req).writebytecountp;
    if (pcVar4 == (curl_off_t *)0x0) goto LAB_00039c69;
    uVar5 = *(undefined4 *)((int)&(data->req).writebytecount + 4);
    *(int *)pcVar4 = (int)(data->req).writebytecount;
    *(undefined4 *)((int)pcVar4 + 4) = uVar5;
    iVar24 = Curl_pgrsUpdate(conn);
  }
  if (iVar24 == 0) {
    iVar24 = (data->req).now.tv_usec;
    CVar12 = Curl_speedcheck(data,(data->req).now);
    if (CVar12 != CURLE_OK) goto LAB_00039d70;
    if ((data->req).keepon == 0) {
      if ((data->set).opt_no_body == false) {
        uVar14 = (uint)(data->req).size;
        uVar15 = *(uint *)((int)&(data->req).size + 4);
        if ((uVar15 & uVar14) == 0xffffffff) {
LAB_0003a470:
          if (((data->req).chunk == false) || ((conn->chunk).state == CHUNK_STOP))
          goto LAB_0003a483;
          pcVar17 = "transfer closed with outstanding read data remaining";
        }
        else {
          uVar26 = *(uint *)((int)&(data->req).bytecount + 4);
          uVar11 = (uint)(data->req).bytecount;
          if (((uVar26 == uVar15 && uVar14 == uVar11) ||
              (pcVar4 = &(data->state).crlf_conversions,
              uVar26 == uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +
                        (uint)CARRY4(uVar14,(uint)*pcVar4) && uVar11 == uVar14 + (int)*pcVar4)) ||
             ((data->req).newurl != (char *)0x0)) goto LAB_0003a470;
          iVar24 = uVar14 - uVar11;
          pcVar17 = "transfer closed with %lld bytes remaining to read";
        }
        CVar12 = CURLE_PARTIAL_FILE;
        Curl_failf(data,pcVar17,iVar24);
        goto LAB_00039d70;
      }
LAB_0003a483:
      iVar24 = Curl_pgrsUpdate(conn);
      if (iVar24 != 0) goto LAB_00039f19;
    }
    else {
      tVar16 = Curl_timeleft(data,&(data->req).now,false);
      if (tVar16 < 0) {
        uVar14 = (uint)(data->req).size;
        uVar15 = *(uint *)((int)&(data->req).size + 4);
        cVar7 = (data->req).bytecount;
        uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4);
        if ((uVar14 & uVar15) == 0xffffffff) {
          pcVar3 = &(data->progress).t_startsingle;
          uVar15 = pcVar3->tv_sec;
          uVar14 = (data->req).now.tv_usec;
          tVar16 = Curl_timediff((data->req).now,*pcVar3);
          pcVar17 = "Operation timed out after %d milliseconds with %lld bytes received";
        }
        else {
          tVar16 = Curl_timediff((data->req).now,(data->progress).t_startsingle);
          pcVar17 = "Operation timed out after %d milliseconds with %lld out of %lld bytes received"
          ;
        }
        CVar12 = CURLE_OPERATION_TIMEDOUT;
        Curl_failf(data,pcVar17,tVar16,(int)cVar7,uVar5,uVar14,uVar15);
        goto LAB_00039d70;
      }
    }
    *done = ((data->req).keepon & 0x33) == 0;
  }
  else {
LAB_00039f19:
    CVar12 = CURLE_ABORTED_BY_CALLBACK;
  }
LAB_00039d70:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return CVar12;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



/* WARNING: Type propagation algorithm not settling */

int FUN_00039860(int param_1,undefined1 *param_2,undefined1 *param_3)

{
  uint *puVar1;
  uint uVar2;
  code *pcVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  char *pcVar6;
  char cVar7;
  uint uVar8;
  undefined4 uVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  uint uVar14;
  int unaff_EBX;
  undefined1 *puVar15;
  undefined1 *puVar16;
  undefined1 *puVar17;
  int in_GS_OFFSET;
  bool bVar18;
  int *unaff_retaddr;
  int aiStackY_a4 [5];
  undefined4 uStack_84;
  undefined1 auStack_80 [8];
  uint local_78;
  uint local_70 [10];
  undefined1 *local_48;
  undefined4 local_44;
  undefined1 *local_3c [4];
  undefined1 local_2a;
  undefined4 local_28 [5];
  undefined4 uStack_14;
  
  iVar13 = -1;
  uStack_14 = 0x3986e;
  entry();
  local_48 = param_2;
  local_3c[0] = param_3;
  local_28[1] = *(undefined4 *)(in_GS_OFFSET + 0x14);
  local_70[5] = param_1 + 0x94;
  local_78 = unaff_retaddr[0x158];
  unaff_retaddr[0x158] = 0;
  if ((*(uint *)(param_1 + 300) & 0x15) == 1) {
    iVar13 = unaff_retaddr[0xa5];
  }
  iVar10 = -1;
  if ((*(uint *)(param_1 + 300) & 0x2a) == 2) {
    iVar10 = unaff_retaddr[0xa6];
  }
  if (*(int *)(*unaff_retaddr + 0xed4) == 0) {
    if (local_78 == 0) {
      uStack_84 = 0;
      local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);
    }
  }
  else {
    local_78 = local_78 | 1;
  }
  puVar16 = auStack_80;
  if (local_78 == 4) {
    iVar13 = 0x37;
    FUN_00027240(param_1,unaff_EBX + 0x47047);
    goto LAB_00039d70;
  }
  local_70[4] = *(uint *)(param_1 + 300) & 1;
  if ((local_70[4] == 0) ||
     (((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0')))) {
    if (((*(uint *)(param_1 + 300) & 2) != 0) &&
       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)) {
LAB_00039b2b:
      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&
         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {
        *(undefined4 *)(puVar16 + -0xc) = 7;
        *(int *)(puVar16 + -0x10) = param_1;
        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;
        FUN_0001c710();
      }
      iVar13 = *(int *)(param_1 + 0x13c);
      if (iVar13 == 0) {
        *(undefined4 *)(puVar16 + 8) = 0;
        *(int *)(puVar16 + -0x10) = param_1;
        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;
        iVar13 = FUN_00039100();
        if (iVar13 != 0) goto LAB_00039d70;
        uVar9 = *(undefined4 *)(puVar16 + 8);
        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);
        if (*(char *)(param_1 + 0x130) == '\0') {
          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)
             ) {
            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;
            puVar17 = puVar16 + 0x48;
            *(undefined4 *)(param_1 + 0x110) = 1;
            *(undefined1 **)(puVar16 + -0x10) = puVar17;
            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;
            FUN_0001ab40();
            uVar9 = *(undefined4 *)(puVar16 + 0x48);
            iVar13 = *(int *)(puVar16 + 0x20);
            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);
            *(undefined4 *)(iVar13 + 0x78) = uVar9;
            *(undefined4 *)(puVar16 + -0x1c) = 0;
            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);
            *(int *)(puVar16 + -0x24) = param_1;
            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;
            FUN_00043260();
            puVar16 = puVar16 + -4;
            goto LAB_00039ea1;
          }
          bVar18 = false;
          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {
            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;
          }
          *(undefined4 *)(puVar16 + 0x20) = uVar9;
          puVar16[0x1c] = bVar18;
          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;
          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;
          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);
          *(int **)(puVar16 + -0x10) = unaff_retaddr;
          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;
          iVar13 = FUN_00039150();
          if (iVar13 != 0) goto LAB_00039d70;
          iVar13 = *(int *)(puVar16 + 0x58);
          cVar7 = puVar16[0x1c];
          iVar10 = *(int *)(puVar16 + 0x20);
          *(int *)(puVar16 + 0x10) = iVar13;
          if (iVar13 == 0) goto LAB_0003a898;
          if (0 < iVar13) {
            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);
            if ((cVar7 == '\0') &&
               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {
              iVar13 = *(int *)(param_1 + 0xcb4);
              if (iVar13 == 0) {
                iVar13 = *(int *)(param_1 + 0x8fc);
                *(int *)(puVar16 + 0x1c) = iVar10;
                *(int *)(puVar16 + -0x10) = iVar13 * 2;
                pcVar3 = *(code **)(unaff_EBX + 0x77802);
                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;
                iVar13 = (*pcVar3)();
                iVar10 = *(int *)(puVar16 + 0x1c);
                *(int *)(param_1 + 0xcb4) = iVar13;
                if (iVar13 == 0) {
                  *(int **)(puVar16 + -4) = unaff_retaddr;
                  iVar13 = 0x1b;
                  *(int **)(puVar16 + -8) = unaff_retaddr;
                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;
                  *(int *)(puVar16 + -0x10) = param_1;
                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;
                  FUN_00027240();
                  goto LAB_00039d70;
                }
              }
              iVar11 = 0;
              *(int **)(puVar16 + 0x1c) = unaff_retaddr;
              while( true ) {
                iVar12 = iVar10 + 1;
                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);
                if (cVar7 == '\n') {
                  *(char *)(iVar13 + iVar10) = '\r';
                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;
                  iVar12 = iVar10 + 2;
                  if (*(char *)(param_1 + 0x7ea) == '\0') {
                    uVar14 = *(uint *)(param_1 + 0xecc);
                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {
                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;
                      *(uint *)(param_1 + 0xed0) =
                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);
                    }
                  }
                }
                else {
                  *(char *)(iVar13 + iVar10) = cVar7;
                }
                iVar11 = iVar11 + 1;
                if (*(int *)(puVar16 + 0x10) == iVar11) break;
                iVar13 = *(int *)(param_1 + 0xcb4);
                iVar10 = iVar12;
              }
              unaff_retaddr = *(int **)(puVar16 + 0x1c);
              if (*(int *)(puVar16 + 0x10) != iVar12) {
                uVar9 = *(undefined4 *)(param_1 + 0xcb4);
                *(int *)(param_1 + 0x13c) = iVar12;
                *(int *)(puVar16 + 0x10) = iVar12;
                *(undefined4 *)(param_1 + 0x140) = uVar9;
              }
            }
            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {
              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);
              *(int **)(puVar16 + -0x10) = unaff_retaddr;
              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;
              iVar13 = FUN_00057f10();
              if (iVar13 != 0) goto LAB_00039d70;
            }
            iVar13 = *(int *)(param_1 + 0x13c);
            goto LAB_00039b53;
          }
          uVar14 = *(uint *)(param_1 + 300);
        }
        else {
LAB_0003a898:
          uVar14 = *(uint *)(param_1 + 300);
          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;
        }
        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;
        *(int **)(puVar16 + -0x10) = unaff_retaddr;
        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;
        FUN_000647d0();
        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {
          *(int **)(puVar16 + -0x10) = unaff_retaddr;
          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;
          iVar13 = FUN_00039660();
          if (iVar13 != 0) goto LAB_00039d70;
        }
      }
      else {
        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;
LAB_00039b53:
        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);
        *(int *)(puVar16 + -0x14) = iVar13;
        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);
        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];
        *(int **)(puVar16 + -0x20) = unaff_retaddr;
        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;
        iVar13 = FUN_00026df0();
        if (iVar13 != 0) goto LAB_00039d70;
        uVar14 = *(uint *)(puVar16 + 0x58);
        if (*(char *)(param_1 + 0x93c) != '\0') {
          *(uint *)(puVar16 + -4) = uVar14;
          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);
          *(undefined4 *)(puVar16 + -0xc) = 4;
          *(int *)(puVar16 + -0x10) = param_1;
          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;
          FUN_00027090();
          uVar14 = *(uint *)(puVar16 + 0x58);
        }
        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);
        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +
                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));
        cVar7 = *(char *)(param_1 + 0x145);
        *(int *)(puVar16 + 8) = iVar13;
        *(int *)(puVar16 + 0xc) = iVar10;
        *(int *)(param_1 + 0xb4) = iVar13;
        *(int *)(param_1 + 0xb8) = iVar10;
        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&
           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&
            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {
          *(undefined1 *)(param_1 + 0x130) = 1;
          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;
          *(int *)(puVar16 + -0x10) = param_1;
          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;
          FUN_00027140();
          uVar14 = *(uint *)(puVar16 + 0x58);
        }
        if (*(uint *)(param_1 + 0x13c) == uVar14) {
          *(int *)(puVar16 + -0x10) = param_1;
          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;
          iVar13 = FUN_00039100();
          if (iVar13 != 0) goto LAB_00039d70;
          *(undefined4 *)(param_1 + 0x13c) = 0;
          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);
          if (*(char *)(param_1 + 0x130) != '\0') {
            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;
            *(int **)(puVar16 + -0x10) = unaff_retaddr;
            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;
            FUN_000647d0();
            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {
              *(int **)(puVar16 + -0x10) = unaff_retaddr;
              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;
              iVar13 = FUN_00039660();
              if (iVar13 != 0) goto LAB_00039d70;
            }
          }
        }
        else {
          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;
          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;
        }
        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);
        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);
        *(int *)(puVar16 + -0x10) = param_1;
        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;
        FUN_0001cb10();
      }
LAB_00039c0b:
      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;
      *(undefined4 *)(puVar16 + -0x14) = 0x39c18;
      FUN_0001ab40();
      uVar9 = *(undefined4 *)(puVar16 + 0x48);
      iVar13 = *(int *)(puVar16 + 0x20);
      puVar15 = puVar16 + -4;
      *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);
      *(undefined4 *)(iVar13 + 0x3c) = uVar9;
      goto LAB_00039ecb;
    }
    FUN_0001ab40(local_3c + 1);
    *(undefined1 **)(param_1 + 0xcc) = local_3c[0];
    *(undefined1 **)(param_1 + 0xd0) = local_3c[1];
    puVar4 = &uStack_84;
LAB_00039c5c:
    puVar15 = (undefined1 *)puVar4;
    if (*(int *)(param_1 + 0x110) == 1) {
      iVar13 = *(int *)(puVar15 + 0x24);
      *(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);
      *(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);
      *(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);
      *(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);
      *(undefined4 *)(puVar15 + -0x14) = 0x3a775;
      iVar13 = FUN_0001abe0();
      if (*(int *)(param_1 + 0xad8) <= iVar13) {
        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;
        *(undefined4 *)(param_1 + 0x110) = 0;
        *(undefined4 *)(puVar15 + -0xc) = 0;
        *(int *)(puVar15 + -0x10) = param_1;
        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;
        FUN_00043c20();
        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;
        *(int *)(puVar15 + -0x10) = param_1;
        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;
        FUN_00027140();
      }
    }
LAB_00039c69:
    *(int **)(puVar15 + -0x10) = unaff_retaddr;
    *(undefined4 *)(puVar15 + -0x14) = 0x39c72;
    iVar13 = FUN_0001cc10();
    puVar16 = puVar15;
  }
  else {
    local_2a = 0;
    local_70[0] = 0;
    *local_48 = 0;
    local_70[3] = 100;
    *local_3c[0] = 0;
    local_44 = 0;
    puVar16 = auStack_80;
    do {
      uVar14 = *(uint *)(param_1 + 0x8f8);
      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {
        uVar2 = *(uint *)(param_1 + 0x94);
        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&
           ((*(char *)(param_1 + 0xd4) == '\0' &&
            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),
            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -
                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {
          uVar14 = uVar8;
        }
      }
      if (uVar14 != 0) {
        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;
        *(uint *)(puVar16 + -0x14) = uVar14;
        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);
        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];
        *(int **)(puVar16 + -0x20) = unaff_retaddr;
        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;
        iVar13 = FUN_00026f00();
        if (iVar13 != 0x51) {
          if (iVar13 == 0) {
            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&
               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;
            goto LAB_000399eb;
          }
          goto LAB_00039d70;
        }
        uVar14 = *(uint *)(param_1 + 300);
        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);
LAB_0003a00e:
        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;
        goto LAB_00039e5f;
      }
      iVar13 = *(int *)(param_1 + 0xb0);
      iVar10 = *(int *)(param_1 + 0xac);
      *(undefined4 *)(puVar16 + 0x58) = 0;
      if (iVar13 == 0 && iVar10 == 0) {
        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {
LAB_00039f9b:
          *(undefined4 *)(puVar16 + -0xc) = 7;
          *(int *)(puVar16 + -0x10) = param_1;
          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;
          FUN_0001c710();
          if (*(int *)(param_1 + 0x110) != 0) {
            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;
            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;
            FUN_0001ab40();
            puVar4 = (undefined4 *)(puVar16 + 0x44);
            uVar9 = *(undefined4 *)(puVar16 + 0x48);
            iVar13 = *(int *)(puVar16 + 0x20);
            puVar16 = puVar16 + -4;
            *(undefined4 *)(iVar13 + 0x74) = *puVar4;
            *(undefined4 *)(iVar13 + 0x78) = uVar9;
          }
        }
LAB_000399eb:
        iVar13 = *(int *)(puVar16 + 0x58);
        if (iVar13 == 0) goto LAB_00039f28;
        if (iVar13 < 1) goto LAB_0003a030;
        *(undefined4 *)(puVar16 + 0x10) = 0;
      }
      else {
LAB_00039f28:
        if (*(int *)(param_1 + 0x120) != 0) {
LAB_0003a030:
          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;
          *(uint *)(param_1 + 300) = uVar14;
          goto LAB_0003a00e;
        }
        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);
        iVar13 = 0;
      }
      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;
      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);
      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);
      if (pcVar3 != (code *)0x0) {
        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;
        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;
        *(int **)(puVar16 + -0xc) = unaff_retaddr;
        *(int *)(puVar16 + -0x10) = param_1;
        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;
        iVar13 = (*pcVar3)();
        if (iVar13 == 0) {
          if (puVar16[0x56] == '\0') goto LAB_00039a4c;
LAB_0003a008:
          uVar14 = *(uint *)(param_1 + 300);
          goto LAB_0003a00e;
        }
        goto LAB_00039d70;
      }
LAB_00039a4c:
      if (*(char *)(param_1 + 0xd4) != '\0') {
        puVar16[0x57] = 0;
        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;
        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;
        *(int **)(puVar16 + -0xc) = unaff_retaddr;
        *(int *)(puVar16 + -0x10) = param_1;
        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;
        iVar13 = FUN_00025650();
        if (iVar13 != 0) goto LAB_00039d70;
        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);
        if (((pcVar3 != (code *)0x0) &&
            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&
           (0 < *(int *)(puVar16 + 0x58))) {
          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;
          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;
          *(int **)(puVar16 + -0xc) = unaff_retaddr;
          *(int *)(puVar16 + -0x10) = param_1;
          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;
          iVar13 = (*pcVar3)();
          if (iVar13 != 0) goto LAB_00039d70;
          if (puVar16[0x56] != '\0') goto LAB_0003a008;
        }
        if (puVar16[0x57] == '\0') {
          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))
          goto LAB_00039a67;
          goto LAB_00039df2;
        }
        if (0 < *(int *)(puVar16 + 0x58)) {
          iVar13 = *unaff_retaddr;
          *(undefined4 *)(puVar16 + -0xc) = 1;
          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);
          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;
          cVar7 = FUN_00042890();
          if (cVar7 == '\0') {
            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);
            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);
            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;
            *(int *)(puVar16 + -0x10) = param_1;
            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;
            FUN_00027140();
          }
          else {
            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);
            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);
            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;
            *(int *)(puVar16 + -0x10) = param_1;
            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;
            FUN_00027140();
            iVar13 = *(int *)(puVar16 + 0x58);
            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;
            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;
          }
        }
        goto LAB_0003a008;
      }
      if (*(int *)(param_1 + 0xe8) == 0) {
LAB_00039df2:
        iVar13 = unaff_retaddr[0x9f];
LAB_00039df8:
        iVar10 = *(int *)(iVar13 + 0x34);
        if (iVar10 != 0) {
LAB_00039dff:
          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {
            iVar13 = *(int *)(param_1 + 0x8f8);
            iVar11 = *(int *)(puVar16 + 0x3c);
            *(int *)(puVar16 + 0x10) = iVar10;
            uVar14 = iVar13 + *(int *)(param_1 + 0x124);
            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);
            *(int *)(param_1 + 0xe8) = iVar10;
            iVar13 = uVar14 - iVar10;
            if ((uint)(iVar11 + iVar10) <= uVar14) {
              iVar13 = *(int *)(puVar16 + 0x3c);
            }
            *(int *)(puVar16 + 0x58) = iVar13;
            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;
            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;
            *(int **)(puVar16 + -0xc) = unaff_retaddr;
            *(int *)(puVar16 + -0x10) = param_1;
            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;
            iVar13 = (**(code **)(puVar16 + 0x10))();
            if (iVar13 == 0) {
              uVar14 = *(uint *)(param_1 + 300);
              if (puVar16[0x56] != '\0') {
                uVar14 = uVar14 | 1;
                *(uint *)(param_1 + 300) = uVar14;
              }
              goto LAB_0003a00e;
            }
            goto LAB_00039d70;
          }
        }
        uVar14 = *(uint *)(param_1 + 300);
        if (*(int *)(puVar16 + 0x10) != 0) {
          uVar14 = uVar14 & 0xfffffffe;
          *(uint *)(param_1 + 300) = uVar14;
        }
      }
      else {
LAB_00039a67:
        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {
          if (*(char *)(param_1 + 0x934) != '\0') {
            *(undefined4 *)(puVar16 + -0xc) = 2;
            *(int **)(puVar16 + -0x10) = unaff_retaddr;
            iVar13 = 8;
            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;
            FUN_000414c0();
            **(undefined1 **)(puVar16 + 0x38) = 1;
            goto LAB_00039d70;
          }
          iVar13 = *(int *)(param_1 + 0x120);
          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {
            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {
              iVar13 = 0;
            }
            else {
              if (*(int *)(param_1 + 0x138) != 0) {
                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {
                  puVar17 = *(undefined1 **)(puVar16 + 0x38);
                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;
                  iVar13 = 0;
                  *puVar17 = 1;
                  goto LAB_00039d70;
                }
                *(undefined1 *)(param_1 + 0x131) = 1;
                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;
                *(int *)(puVar16 + -0x10) = param_1;
                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;
                FUN_00027140();
              }
              iVar13 = *(int *)(param_1 + 0xeb8);
              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&
                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&
                 (*(char *)(param_1 + 0x131) == '\0')) {
                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&
                   (iVar13 == *(int *)(param_1 + 0x94))) {
                  *(int *)(puVar16 + -4) = iVar13;
                  *(int *)(puVar16 + -8) = iVar13;
                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;
                  *(int *)(puVar16 + -0x10) = param_1;
                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;
                  FUN_00027140();
                  *(undefined4 *)(puVar16 + -0xc) = 1;
                  *(int **)(puVar16 + -0x10) = unaff_retaddr;
                  iVar13 = 0;
                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;
                  FUN_000414c0();
                  puVar17 = *(undefined1 **)(puVar16 + 0x38);
                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;
                  *puVar17 = 1;
                }
                else {
                  *(int **)(puVar16 + -4) = unaff_retaddr;
                  *(int **)(puVar16 + -8) = unaff_retaddr;
                  iVar13 = 0x21;
                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;
                  *(int *)(puVar16 + -0x10) = param_1;
                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;
                  FUN_00027240();
                }
                goto LAB_00039d70;
              }
              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {
                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);
                *(int *)(puVar16 + -0x10) = param_1;
                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;
                cVar7 = FUN_000397f0();
                if (cVar7 == '\0') {
                  **(undefined1 **)(puVar16 + 0x38) = 1;
                  *(undefined4 *)(param_1 + 0xf48) = 0x130;
                  *(int **)(puVar16 + -4) = unaff_retaddr;
                  *(int **)(puVar16 + -8) = unaff_retaddr;
                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;
                  *(int *)(puVar16 + -0x10) = param_1;
                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;
                  FUN_00027140();
                  *(undefined4 *)(puVar16 + -0xc) = 1;
                  *(int **)(puVar16 + -0x10) = unaff_retaddr;
                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;
                  FUN_000414c0();
                  goto LAB_00039e7c;
                }
              }
              iVar13 = *(int *)(param_1 + 0x120);
            }
          }
          *(int *)(param_1 + 0x120) = iVar13 + 1;
          if (*(char *)(param_1 + 0x93c) == '\0') {
LAB_0003a05d:
            if (*(char *)(param_1 + 0x144) != '\0') {
LAB_0003a280:
              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;
              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);
              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);
              *(int **)(puVar16 + -0x10) = unaff_retaddr;
              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;
              iVar10 = FUN_0003f2e0();
              if (0 < iVar10) {
                if (iVar10 == 4) {
                  iVar13 = 0x17;
                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;
                  *(int *)(puVar16 + -0x10) = param_1;
                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;
                  FUN_00027240();
                }
                else {
                  iVar13 = 0x38;
                  *(int *)(puVar16 + -0x10) = iVar10;
                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;
                  uVar9 = FUN_0003f850();
                  *(undefined4 *)(puVar16 + -8) = uVar9;
                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;
                  *(int *)(puVar16 + -0x10) = param_1;
                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;
                  FUN_00027240();
                }
                goto LAB_00039d70;
              }
              if (iVar10 == -1) {
                iVar13 = unaff_retaddr[0xd];
                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;
                if (iVar13 != 0) {
                  *(int *)(puVar16 + -8) = iVar13;
                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;
                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;
                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;
                  FUN_00027140();
                  iVar10 = *unaff_retaddr;
                  *(undefined4 *)(puVar16 + -0xc) = 1;
                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);
                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;
                  cVar7 = FUN_00042890();
                  if (cVar7 != '\0') {
                    *(int *)(puVar16 + -8) = iVar13;
                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;
                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;
                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;
                    FUN_00027140();
                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;
                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;
                  }
                }
              }
            }
            uVar9 = *(undefined4 *)(param_1 + 0xb0);
            iVar13 = *(int *)(param_1 + 0xd8);
            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);
            *(undefined4 *)(puVar16 + 0x2c) = uVar9;
            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {
              uVar2 = *(uint *)(param_1 + 0xe4);
              puVar1 = (uint *)(puVar16 + 0x28);
              uVar14 = *puVar1;
              *puVar1 = *puVar1 + uVar2;
              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);
              uVar9 = *(undefined4 *)(puVar16 + 0x2c);
              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);
              *(undefined4 *)(param_1 + 0xb0) = uVar9;
            }
          }
          else {
            if (*(int *)(param_1 + 0xd8) == 0) {
LAB_0003a048:
              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);
              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);
              *(undefined4 *)(puVar16 + -0xc) = 3;
              *(int *)(puVar16 + -0x10) = param_1;
              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;
              FUN_00027090();
              goto LAB_0003a05d;
            }
            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);
            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);
            *(undefined4 *)(puVar16 + -0xc) = 3;
            *(int *)(puVar16 + -0x10) = param_1;
            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;
            FUN_00027090();
            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;
            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;
            uVar9 = *(undefined4 *)(param_1 + 0xb0);
            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);
            *(undefined4 *)(puVar16 + 0x2c) = uVar9;
          }
          uVar14 = *(uint *)(puVar16 + 0x58);
          uVar2 = *(uint *)(param_1 + 0xa4);
          uVar8 = *(uint *)(param_1 + 0xa0);
          *(uint *)(puVar16 + 0x40) = uVar14;
          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);
          *(uint *)(puVar16 + 0x34) =
               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +
               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));
          if (((uVar2 & uVar8) != 0xffffffff) &&
             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,
             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=
             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==
             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {
            iVar13 = *(int *)(puVar16 + 0x28);
            iVar10 = *(int *)(puVar16 + 0x40);
            *(uint *)(puVar16 + 0x30) = uVar8;
            iVar11 = (iVar10 + iVar13) - uVar8;
            *(int *)(puVar16 + 0x3c) = iVar11;
            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {
              iVar11 = *unaff_retaddr;
              *(undefined4 *)(puVar16 + -0xc) = 1;
              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);
              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;
              cVar7 = FUN_00042890();
              if (cVar7 == '\0') {
                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);
                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);
                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);
                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);
                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);
                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);
                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);
                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;
                *(int *)(puVar16 + -0x30) = param_1;
                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;
                FUN_00027140();
              }
              else {
                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);
                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);
                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);
                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);
                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);
                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);
                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);
                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);
                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);
                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;
                *(int *)(puVar16 + -0x30) = param_1;
                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;
                FUN_00027140();
                iVar11 = *(int *)(puVar16 + 0x30);
                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;
                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));
              }
              uVar9 = *(undefined4 *)(param_1 + 0xb0);
              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);
              iVar13 = *(int *)(param_1 + 0xac);
              *(undefined4 *)(puVar16 + 0x2c) = uVar9;
              *(int *)(puVar16 + 0x28) = iVar13;
            }
            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;
            if ((int)uVar14 < 0) {
              *(undefined4 *)(puVar16 + 0x58) = 0;
              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);
              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);
            }
            else {
              *(uint *)(puVar16 + 0x58) = uVar14;
              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);
              *(uint *)(puVar16 + 0x34) =
                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +
                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));
            }
            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;
          }
          uVar9 = *(undefined4 *)(puVar16 + 0x30);
          uVar5 = *(undefined4 *)(puVar16 + 0x34);
          *(undefined4 *)(param_1 + 0xac) = uVar9;
          *(undefined4 *)(param_1 + 0xb0) = uVar5;
          *(undefined4 *)(puVar16 + -8) = uVar5;
          *(undefined4 *)(puVar16 + -0xc) = uVar9;
          *(int *)(puVar16 + -0x10) = param_1;
          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;
          FUN_0001c950();
          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;
          uVar14 = *(uint *)(param_1 + 0xd8);
          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)
          goto LAB_0003a318;
          cVar7 = *(char *)(param_1 + 0x131);
          if (uVar14 == 0) {
LAB_0003a358:
            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&
               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {
              if (cVar7 == '\0') {
                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);
                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);
                *(int *)(puVar16 + -0xc) = iVar13;
                *(int **)(puVar16 + -0x10) = unaff_retaddr;
                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;
                iVar13 = FUN_00046a70();
                goto LAB_0003a392;
              }
              goto LAB_0003a1c7;
            }
            iVar13 = unaff_retaddr[0x9f];
            if (cVar7 == '\0') {
              uVar9 = *(undefined4 *)(param_1 + 0xe8);
              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {
                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);
                *(undefined4 *)(puVar16 + -8) = uVar9;
                *(undefined4 *)(puVar16 + -0xc) = 1;
                *(int **)(puVar16 + -0x10) = unaff_retaddr;
                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;
                iVar13 = FUN_00027580();
              }
              else {
                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);
                *(undefined4 *)(puVar16 + -0xc) = uVar9;
                *(int **)(puVar16 + -0x10) = unaff_retaddr;
                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;
                iVar13 = FUN_00055cf0();
              }
LAB_0003a392:
              *(undefined4 *)(param_1 + 0xd8) = 0;
              if (iVar13 == 0) goto LAB_00039df2;
              goto LAB_00039d70;
            }
          }
          else {
            if (cVar7 == '\0') {
              uVar14 = *(uint *)(param_1 + 0xa4);
              uVar2 = *(uint *)(param_1 + 0xa0);
              uVar8 = *(uint *)(param_1 + 0xe4);
              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);
              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {
                *(uint *)(puVar16 + -4) = uVar8;
              }
              else {
                *(uint *)(puVar16 + -4) = uVar2;
              }
              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);
              *(undefined4 *)(puVar16 + -0xc) = 1;
              *(int **)(puVar16 + -0x10) = unaff_retaddr;
              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;
              iVar13 = FUN_00027580();
              if (iVar13 != 0) goto LAB_00039d70;
              uVar14 = *(uint *)(param_1 + 0xd8);
            }
            if (uVar14 < 2) {
              cVar7 = *(char *)(param_1 + 0x131);
              goto LAB_0003a358;
            }
LAB_0003a1c7:
            iVar13 = unaff_retaddr[0x9f];
          }
          *(undefined4 *)(param_1 + 0xd8) = 0;
          goto LAB_00039df8;
        }
LAB_0003a318:
        iVar13 = unaff_retaddr[0x9f];
        iVar10 = *(int *)(iVar13 + 0x34);
        if (iVar10 != 0) goto LAB_00039dff;
        uVar14 = *(uint *)(param_1 + 300);
      }
      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;
      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {
        *(undefined4 *)(puVar16 + -0xc) = 0;
        *(int **)(puVar16 + -0x10) = unaff_retaddr;
        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;
        cVar7 = FUN_0007b420();
        if ((cVar7 == '\0') &&
           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))
        goto LAB_0003a008;
      }
      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;
      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);
    } while (*(int *)(puVar16 + 0x1c) != -1);
    uVar14 = *(uint *)(param_1 + 300);
LAB_00039e5f:
    puVar17 = *(undefined1 **)(puVar16 + 0x44);
    unaff_retaddr[0x158] = 1;
    *puVar17 = 1;
joined_r0x0003a020:
    if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {
      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;
      *(int *)(puVar16 + -0x10) = param_1;
      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;
      FUN_00027140();
      pcVar6 = *(char **)(puVar16 + 0x38);
      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;
      if (*pcVar6 != '\0') {
LAB_0003a468:
        iVar13 = 0;
        goto LAB_00039d70;
      }
    }
    else {
LAB_00039e7c:
      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;
      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;
    }
    puVar17 = puVar16 + 0x48;
LAB_00039ea1:
    *(undefined1 **)(puVar16 + -0x10) = puVar17;
    *(undefined4 *)(puVar16 + -0x14) = 0x39eaa;
    FUN_0001ab40();
    uVar9 = *(undefined4 *)(puVar16 + 0x48);
    iVar13 = *(int *)(puVar16 + 0x20);
    puVar15 = puVar16 + -4;
    *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);
    *(undefined4 *)(iVar13 + 0x3c) = uVar9;
    puVar4 = (undefined4 *)(puVar16 + -4);
    if (*(int *)(puVar16 + 0x1c) == 0) goto LAB_00039c5c;
LAB_00039ecb:
    puVar4 = *(undefined4 **)(param_1 + 0x9c);
    if (puVar4 != (undefined4 *)0x0) {
      uVar9 = *(undefined4 *)(param_1 + 0xb0);
      *puVar4 = *(undefined4 *)(param_1 + 0xac);
      puVar4[1] = uVar9;
    }
    puVar4 = *(undefined4 **)(param_1 + 0xa8);
    if (puVar4 == (undefined4 *)0x0) goto LAB_00039c69;
    uVar9 = *(undefined4 *)(param_1 + 0xb8);
    *puVar4 = *(undefined4 *)(param_1 + 0xb4);
    puVar4[1] = uVar9;
    *(int **)(puVar15 + -0x10) = unaff_retaddr;
    *(undefined4 *)(puVar15 + -0x14) = 0x39f0e;
    iVar13 = FUN_0001cc10();
    puVar16 = puVar15;
  }
  if (iVar13 == 0) {
    *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);
    *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);
    *(int *)(puVar16 + -0x10) = param_1;
    *(undefined4 *)(puVar16 + -0x14) = 0x39c90;
    iVar13 = FUN_00033f20();
    if (iVar13 != 0) goto LAB_00039d70;
    if (*(int *)(param_1 + 300) == 0) {
      if (*(char *)(param_1 + 0x934) == '\0') {
        uVar14 = *(uint *)(param_1 + 0x98);
        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);
        *(uint *)(puVar16 + 0xc) = uVar14;
        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {
LAB_0003a470:
          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;
          unaff_EBX = unaff_EBX + 0x47696;
        }
        else {
          iVar10 = *(int *)(param_1 + 0xac);
          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);
          *(int *)(puVar16 + 0x10) = iVar10;
          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&
                *(int *)(puVar16 + 8) == iVar10) ||
              (*(int *)(puVar16 + 0x14) ==
               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +
               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&
               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||
             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;
          *(uint *)(puVar16 + -4) =
               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -
               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));
          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);
          unaff_EBX = unaff_EBX + 0x47662;
        }
        *(int *)(puVar16 + -0xc) = unaff_EBX;
        iVar13 = 0x12;
        *(int *)(puVar16 + -0x10) = param_1;
        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;
        FUN_00027240();
        goto LAB_00039d70;
      }
LAB_0003a483:
      *(int **)(puVar16 + -0x10) = unaff_retaddr;
      *(undefined4 *)(puVar16 + -0x14) = 0x3a48c;
      iVar10 = FUN_0001cc10();
      if (iVar10 != 0) goto LAB_00039f19;
    }
    else {
      *(undefined4 *)(puVar16 + -8) = 0;
      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;
      *(int *)(puVar16 + -0x10) = param_1;
      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;
      iVar10 = FUN_0003f980();
      if (iVar10 < 0) {
        uVar9 = *(undefined4 *)(param_1 + 0x98);
        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);
        uVar5 = *(undefined4 *)(param_1 + 0xac);
        *(undefined4 *)(puVar16 + 0xc) = uVar9;
        *(undefined4 *)(puVar16 + 0x10) = uVar5;
        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);
        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {
          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);
          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);
          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);
          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);
          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;
          uVar9 = FUN_0001abe0();
          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);
          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);
          *(undefined4 *)(puVar16 + -0x18) = uVar9;
          unaff_EBX = unaff_EBX + 0x4761e;
        }
        else {
          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);
          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);
          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);
          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);
          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;
          uVar9 = FUN_0001abe0();
          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);
          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);
          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);
          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);
          *(undefined4 *)(puVar16 + -0x18) = uVar9;
          unaff_EBX = unaff_EBX + 0x475ce;
        }
        *(int *)(puVar16 + -0x1c) = unaff_EBX;
        iVar13 = 0x1c;
        *(int *)(puVar16 + -0x20) = param_1;
        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;
        FUN_00027240();
        goto LAB_00039d70;
      }
    }
    *(bool *)*(undefined4 *)(puVar16 + 0x38) = (*(byte *)(param_1 + 300) & 0x33) == 0;
  }
  else {
LAB_00039f19:
    iVar13 = 0x2a;
  }
LAB_00039d70:
  if (*(int *)(puVar16 + 0x5c) == *(int *)(in_GS_OFFSET + 0x14)) {
    return iVar13;
  }
                    /* WARNING: Subroutine does not return */
  *(undefined4 *)(puVar16 + -4) = 0x3ad7f;
  FUN_0007c1a0();
}


PUSH EBP
MOV EDX,0xffffffff
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00019ed0
ADD EBX,0x76f72
SUB ESP,0x6c
MOV EAX,dword ptr [ESP + 0x88]
MOV EDI,dword ptr [ESP + 0x84]
MOV ESI,dword ptr [ESP + 0x80]
MOV dword ptr [ESP + 0x38],EAX
MOV EAX,dword ptr [ESP + 0x8c]
MOV dword ptr [ESP + 0x44],EAX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x5c],EAX
XOR EAX,EAX
LEA EAX,[EDI + 0x94]
MOV dword ptr [ESP + 0x24],EAX
MOV EAX,dword ptr [ESI + 0x560]
MOV dword ptr [ESI + 0x560],0x0
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,dword ptr [EDI + 0x12c]
MOV ECX,EAX
AND ECX,0x15
CMP ECX,0x1
JNZ 0x000398db
MOV EDX,dword ptr [ESI + 0x294]
AND EAX,0x2a
MOV ECX,0xffffffff
CMP EAX,0x2
JNZ 0x000398ee
MOV ECX,dword ptr [ESI + 0x298]
MOV EAX,dword ptr [ESI]
MOV EAX,dword ptr [EAX + 0xed4]
TEST EAX,EAX
JZ 0x0003a1e0
OR dword ptr [ESP + 0x8],0x1
CMP dword ptr [ESP + 0x8],0x4
JZ 0x0003a7c0
MOV EAX,dword ptr [EDI + 0x12c]
MOV ECX,EAX
AND ECX,0x1
MOV dword ptr [ESP + 0x20],ECX
JZ 0x00039b10
TEST byte ptr [ESP + 0x8],0x1
JNZ 0x00039937
CMP byte ptr [ESI + 0x261],0x0
JZ 0x00039b10
MOV EAX,dword ptr [ESP + 0x38]
MOV byte ptr [ESP + 0x56],0x0
MOV EBP,ESI
MOV dword ptr [ESP + 0x10],0x0
MOV byte ptr [EAX],0x0
MOV EAX,dword ptr [ESP + 0x44]
MOV dword ptr [ESP + 0x1c],0x64
MOV byte ptr [EAX],0x0
MOV dword ptr [ESP + 0x3c],0x0
LEA ESI,[ESI]
MOV EAX,dword ptr [EBP + 0x27c]
MOV ECX,dword ptr [EDI + 0x8f8]
TEST byte ptr [EAX + 0x40],0x3
JZ 0x00039983
CMP dword ptr [EBP + 0x178],0x14
JZ 0x000399b7
MOV EDX,dword ptr [EDI + 0x98]
MOV EAX,dword ptr [EDI + 0x94]
MOV ESI,EDX
AND ESI,EAX
CMP ESI,-0x1
JZ 0x000399b7
CMP byte ptr [EDI + 0xd4],0x0
JNZ 0x000399b7
SUB EAX,dword ptr [EDI + 0xac]
SBB EDX,dword ptr [EDI + 0xb0]
MOV ESI,EDX
CMP EAX,ECX
SBB ESI,0x0
CMOVL ECX,EAX
TEST ECX,ECX
JNZ 0x00039f48
MOV EAX,dword ptr [EDI + 0xb0]
OR EAX,dword ptr [EDI + 0xac]
MOV dword ptr [ESP + 0x58],0x0
JNZ 0x00039f28
MOV EAX,dword ptr [EDI + 0xb8]
OR EAX,dword ptr [EDI + 0xb4]
JZ 0x00039f9b
MOV EAX,dword ptr [ESP + 0x58]
TEST EAX,EAX
JZ 0x00039f28
JLE 0x0003a030
MOV dword ptr [ESP + 0x10],0x0
MOV EDX,dword ptr [EDI + 0x124]
MOV byte ptr [EDX + EAX*0x1],0x0
MOV EAX,dword ptr [EDI + 0x124]
MOV dword ptr [EDI + 0xe8],EAX
MOV EAX,dword ptr [EBP + 0x27c]
MOV EAX,dword ptr [EAX + 0x34]
TEST EAX,EAX
JZ 0x00039a4c
LEA EDX,[ESP + 0x56]
PUSH EDX
LEA ESI,[ESP + 0x5c]
PUSH ESI
PUSH EBP
PUSH EDI
CALL EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0003a3a8
CMP byte ptr [ESP + 0x56],0x0
JNZ 0x0003a006
CMP byte ptr [EDI + 0xd4],0x0
JNZ 0x00039d90
MOV EAX,dword ptr [EDI + 0xe8]
TEST EAX,EAX
JZ 0x00039df2
MOV ESI,dword ptr [ESP + 0x58]
TEST ESI,ESI
JG 0x00039a7a
TEST byte ptr [ESP + 0x10],0x1
JZ 0x0003a318
CMP byte ptr [EDI + 0x934],0x0
JNZ 0x0003ab58
MOV EAX,dword ptr [EDI + 0x120]
MOV EDX,dword ptr [ESP + 0x10]
OR EDX,EAX
JZ 0x0003a4e0
ADD EAX,0x1
CMP byte ptr [EDI + 0x93c],0x0
MOV dword ptr [EDI + 0x120],EAX
JZ 0x0003a05d
MOV ECX,dword ptr [EDI + 0xd8]
TEST ECX,ECX
JZ 0x0003a048
PUSH dword ptr [EDI + 0xe4]
PUSH dword ptr [EDI + 0xc60]
PUSH 0x3
PUSH EDI
CALL 0x00027090
ADD ESP,0x10
CMP dword ptr [EDI + 0xd8],0x1
JZ 0x0003a048
CMP byte ptr [EDI + 0x144],0x0
JNZ 0x0003a280
MOV EAX,dword ptr [EDI + 0xac]
MOV EDX,dword ptr [EDI + 0xb0]
MOV dword ptr [ESP + 0x28],EAX
MOV dword ptr [ESP + 0x2c],EDX
JMP 0x0003a08b
TEST AL,0x2
JZ 0x00039c38
MOV dword ptr [ESP + 0x20],0x0
TEST byte ptr [ESP + 0x8],0x2
JZ 0x00039c38
MOV EAX,dword ptr [EDI + 0xb0]
OR EAX,dword ptr [EDI + 0xac]
JZ 0x0003a3d0
MOV ECX,dword ptr [EDI + 0x13c]
TEST ECX,ECX
JZ 0x0003a5f0
LEA EAX,[ESP + 0x58]
MOV dword ptr [ESP + 0x8],EAX
SUB ESP,0xc
PUSH dword ptr [ESP + 0x14]
PUSH ECX
PUSH dword ptr [EDI + 0x140]
PUSH dword ptr [ESI + 0x298]
PUSH ESI
CALL 0x00026df0
ADD ESP,0x20
MOV EBP,EAX
TEST EAX,EAX
JNZ 0x00039d70
CMP byte ptr [EDI + 0x93c],0x0
MOV ECX,dword ptr [ESP + 0x58]
JNZ 0x0003a8e8
MOV EAX,ECX
CDQ
ADD EAX,dword ptr [EDI + 0xb4]
ADC EDX,dword ptr [EDI + 0xb8]
CMP byte ptr [EDI + 0x145],0x0
MOV dword ptr [ESP + 0x8],EAX
MOV dword ptr [ESP + 0xc],EDX
MOV dword ptr [EDI + 0xb4],EAX
MOV dword ptr [EDI + 0xb8],EDX
JNZ 0x0003a880
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0xc]
XOR EAX,dword ptr [EDI + 0xecc]
XOR EDX,dword ptr [EDI + 0xed0]
OR EDX,EAX
JZ 0x0003a920
MOV EAX,dword ptr [EDI + 0x13c]
CMP EAX,ECX
JZ 0x0003aae0
SUB EAX,ECX
ADD dword ptr [EDI + 0x140],ECX
MOV dword ptr [EDI + 0x13c],EAX
SUB ESP,0x4
PUSH dword ptr [EDI + 0xb8]
PUSH dword ptr [EDI + 0xb4]
PUSH EDI
CALL 0x0001cb10
ADD ESP,0x10
LEA EAX,[ESP + 0x48]
SUB ESP,0xc
PUSH EAX
CALL 0x0001ab40
MOV EAX,dword ptr [ESP + 0x54]
MOV EDX,dword ptr [ESP + 0x58]
MOV ECX,dword ptr [ESP + 0x30]
ADD ESP,0xc
MOV dword ptr [ECX + 0x38],EAX
MOV dword ptr [ECX + 0x3c],EDX
JMP 0x00039ecb
LEA EAX,[ESP + 0x48]
SUB ESP,0xc
PUSH EAX
CALL 0x0001ab40
MOV EAX,dword ptr [ESP + 0x54]
MOV EDX,dword ptr [ESP + 0x58]
ADD ESP,0xc
MOV dword ptr [EDI + 0xcc],EAX
MOV dword ptr [EDI + 0xd0],EDX
CMP dword ptr [EDI + 0x110],0x1
JZ 0x0003a760
SUB ESP,0xc
PUSH ESI
CALL 0x0001cc10
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00039f19
SUB ESP,0x4
MOV EAX,dword ptr [ESP + 0x28]
PUSH dword ptr [EAX + 0x3c]
PUSH dword ptr [EAX + 0x38]
PUSH EDI
CALL 0x00033f20
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JNZ 0x00039d70
MOV EAX,dword ptr [EDI + 0x12c]
TEST EAX,EAX
JNZ 0x0003a3f8
CMP byte ptr [EDI + 0x934],0x0
JNZ 0x0003a483
MOV EAX,dword ptr [EDI + 0x94]
MOV EDX,dword ptr [EDI + 0x98]
MOV ECX,EDX
MOV EDX,EAX
MOV dword ptr [ESP + 0x8],EDX
MOV EAX,ECX
AND EAX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0xc],ECX
CMP EAX,-0x1
JZ 0x0003a470
MOV EDX,dword ptr [EDI + 0xb0]
MOV EAX,dword ptr [EDI + 0xac]
MOV dword ptr [ESP + 0x14],EDX
MOV EDX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0x10],EAX
XOR EDX,EAX
MOV EAX,EDX
MOV EDX,dword ptr [ESP + 0x14]
XOR EDX,dword ptr [ESP + 0xc]
OR EDX,EAX
JZ 0x0003a470
MOV EAX,dword ptr [ESP + 0x10]
MOV EDX,dword ptr [ESP + 0x8]
ADD EDX,dword ptr [EDI + 0xea8]
MOV ECX,dword ptr [ESP + 0xc]
ADC ECX,dword ptr [EDI + 0xeac]
XOR EAX,EDX
MOV EDX,dword ptr [ESP + 0x14]
XOR EDX,ECX
OR EDX,EAX
JZ 0x0003a470
MOV EDX,dword ptr [EDI + 0x138]
TEST EDX,EDX
JNZ 0x0003a470
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0xc]
SUB EAX,dword ptr [ESP + 0x10]
SBB EDX,dword ptr [ESP + 0x14]
PUSH EDX
PUSH EAX
LEA EAX,[EBX + 0xfffd06f0]
LEA ESI,[ESI]
PUSH EAX
MOV EBP,0x12
PUSH EDI
CALL 0x00027240
ADD ESP,0x10
NOP
MOV EBX,dword ptr [ESP + 0x5c]
XOR EBX,dword ptr GS:[0x14]
MOV EAX,EBP
JNZ 0x0003ad7a
ADD ESP,0x6c
POP EBX
POP ESI
POP EDI
POP EBP
RET
LEA EAX,[ESP + 0x57]
MOV byte ptr [ESP + 0x57],0x0
PUSH EAX
LEA ESI,[ESP + 0x5c]
PUSH ESI
PUSH EBP
PUSH EDI
CALL 0x00025650
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0003a3a8
MOV EDX,dword ptr [EBP + 0x27c]
MOV EDX,dword ptr [EDX + 0x34]
TEST EDX,EDX
JZ 0x00039dd0
CMP EAX,dword ptr [EDI + 0xa0]
SBB EAX,dword ptr [EDI + 0xa4]
JGE 0x0003a208
CMP byte ptr [ESP + 0x57],0x0
JNZ 0x0003aa80
MOV EAX,dword ptr [EDI + 0xe8]
TEST EAX,EAX
JZ 0x00039df2
CMP byte ptr [EDI + 0xd4],0x0
JZ 0x00039a67
MOV EDX,dword ptr [EBP + 0x27c]
MOV EAX,dword ptr [EDX + 0x34]
TEST EAX,EAX
JZ 0x00039e14
MOV ESI,dword ptr [ESP + 0x3c]
TEST ESI,ESI
JZ 0x00039e14
CMP byte ptr [EBP + 0x261],0x0
JZ 0x0003aa00
MOV ECX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EDI + 0x12c]
TEST ECX,ECX
JZ 0x00039e2b
AND EAX,0xfffffffe
MOV dword ptr [EDI + 0x12c],EAX
TEST AL,0x10
JNZ 0x0003a948
TEST byte ptr [EDX + 0x40],0x30
JZ 0x00039fe0
SUB dword ptr [ESP + 0x1c],0x1
MOV ESI,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESP + 0x1c]
MOV dword ptr [ESP + 0x10],ESI
CMP EAX,-0x1
JNZ 0x00039968
MOV EAX,dword ptr [EDI + 0x12c]
MOV ESI,EBP
MOV EDX,dword ptr [ESP + 0x44]
AND EAX,0x3
MOV dword ptr [ESI + 0x560],0x1
MOV byte ptr [EDX],0x1
CMP EAX,0x2
JZ 0x0003a430
MOV EAX,dword ptr [ESP + 0x38]
CMP byte ptr [EAX],0x0
JNZ 0x0003a468
TEST byte ptr [EDI + 0x12c],0x2
JZ 0x00039e9d
TEST byte ptr [ESP + 0x8],0x2
JNZ 0x00039b2b
LEA EBP,[ESP + 0x48]
SUB ESP,0xc
PUSH EBP
CALL 0x0001ab40
MOV EAX,dword ptr [ESP + 0x54]
MOV EDX,dword ptr [ESP + 0x58]
MOV ECX,dword ptr [ESP + 0x30]
ADD ESP,0xc
MOV dword ptr [ECX + 0x38],EAX
MOV dword ptr [ECX + 0x3c],EDX
MOV ECX,dword ptr [ESP + 0x20]
TEST ECX,ECX
JZ 0x00039c5c
MOV EAX,dword ptr [EDI + 0x9c]
TEST EAX,EAX
JZ 0x00039ee6
MOV EDX,dword ptr [EDI + 0xac]
MOV ECX,dword ptr [EDI + 0xb0]
MOV dword ptr [EAX],EDX
MOV dword ptr [EAX + 0x4],ECX
MOV EAX,dword ptr [EDI + 0xa8]
TEST EAX,EAX
JZ 0x00039c69
MOV EDX,dword ptr [EDI + 0xb4]
MOV ECX,dword ptr [EDI + 0xb8]
SUB ESP,0xc
MOV dword ptr [EAX],EDX
MOV dword ptr [EAX + 0x4],ECX
PUSH ESI
CALL 0x0001cc10
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00039c7d
MOV EBP,0x2a
JMP 0x00039d70
MOV EAX,dword ptr [EDI + 0x120]
TEST EAX,EAX
JNZ 0x0003a030
MOV EDX,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0x10],EDX
JMP 0x00039a05
SUB ESP,0xc
LEA ESI,[ESP + 0x64]
PUSH ESI
PUSH ECX
PUSH dword ptr [EDI + 0x124]
PUSH dword ptr [EBP + 0x294]
PUSH EBP
CALL 0x00026f00
ADD ESP,0x20
CMP EAX,0x51
JZ 0x0003a9e8
TEST EAX,EAX
JNZ 0x0003a3a8
MOV EAX,dword ptr [EDI + 0xb0]
OR EAX,dword ptr [EDI + 0xac]
JNZ 0x000399eb
MOV EAX,dword ptr [EDI + 0xb8]
OR EAX,dword ptr [EDI + 0xb4]
JNZ 0x000399eb
SUB ESP,0x8
PUSH 0x7
PUSH EDI
CALL 0x0001c710
MOV EAX,dword ptr [EDI + 0x110]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000399eb
LEA EAX,[ESP + 0x48]
SUB ESP,0xc
PUSH EAX
CALL 0x0001ab40
MOV EAX,dword ptr [ESP + 0x54]
MOV EDX,dword ptr [ESP + 0x58]
MOV ECX,dword ptr [ESP + 0x30]
ADD ESP,0xc
MOV dword ptr [ECX + 0x74],EAX
MOV dword ptr [ECX + 0x78],EDX
JMP 0x000399eb
SUB ESP,0x8
PUSH 0x0
PUSH EBP
CALL 0x0007b420
ADD ESP,0x10
TEST AL,AL
JNZ 0x00039e3d
MOV EAX,dword ptr [EBP + 0x27c]
TEST byte ptr [EAX + 0x40],0x3
JNZ 0x0003a338
MOV ESI,EBP
MOV EAX,dword ptr [EDI + 0x12c]
MOV EBP,dword ptr [ESP + 0x1c]
TEST EBP,EBP
JZ 0x00039e5f
AND EAX,0x3
CMP EAX,0x2
JNZ 0x00039e7c
JMP 0x0003a430
MOV EAX,dword ptr [EDI + 0x12c]
MOV ESI,EBP
AND EAX,0xfffffffe
MOV dword ptr [EDI + 0x12c],EAX
JMP 0x0003a00e
PUSH dword ptr [ESP + 0x58]
PUSH dword ptr [EDI + 0xe8]
PUSH 0x3
PUSH EDI
CALL 0x00027090
ADD ESP,0x10
CMP byte ptr [EDI + 0x144],0x0
JNZ 0x0003a280
MOV EAX,dword ptr [EDI + 0xac]
MOV EDX,dword ptr [EDI + 0xb0]
CMP dword ptr [EDI + 0xd8],0x1
MOV dword ptr [ESP + 0x28],EAX
MOV dword ptr [ESP + 0x2c],EDX
JZ 0x0003a240
MOV EAX,dword ptr [ESP + 0x58]
MOV ESI,dword ptr [EDI + 0xa4]
MOV ECX,dword ptr [EDI + 0xa0]
CDQ
MOV dword ptr [ESP + 0x40],EAX
ADD EAX,dword ptr [ESP + 0x28]
MOV dword ptr [ESP + 0x30],EAX
MOV EAX,ESI
ADC EDX,dword ptr [ESP + 0x2c]
AND EAX,ECX
MOV dword ptr [ESP + 0x34],EDX
CMP EAX,-0x1
JZ 0x0003a118
MOV EAX,dword ptr [ESP + 0x30]
MOV EDX,dword ptr [ESP + 0x34]
CMP EAX,ECX
SBB EDX,ESI
JL 0x0003a118
MOV EAX,dword ptr [ESP + 0x28]
MOV ESI,dword ptr [ESP + 0x40]
MOV EDX,ECX
MOV dword ptr [ESP + 0x30],ECX
ADD ESI,EAX
MOV ECX,ESI
SUB ECX,EDX
MOV dword ptr [ESP + 0x3c],ECX
JZ 0x0003a0ee
CMP byte ptr [EDI + 0x131],0x0
JZ 0x0003a7e0
MOV EDX,dword ptr [ESP + 0x30]
SUB EDX,EAX
MOV EAX,EDX
JS 0x0003a3b0
MOV dword ptr [ESP + 0x58],EDX
CDQ
ADD EAX,dword ptr [ESP + 0x28]
ADC EDX,dword ptr [ESP + 0x2c]
MOV dword ptr [ESP + 0x30],EAX
MOV dword ptr [ESP + 0x34],EDX
AND dword ptr [EDI + 0x12c],0xfffffffe
MOV EAX,dword ptr [ESP + 0x30]
MOV EDX,dword ptr [ESP + 0x34]
SUB ESP,0x4
MOV dword ptr [EDI + 0xac],EAX
MOV dword ptr [EDI + 0xb0],EDX
PUSH EDX
PUSH EAX
PUSH EDI
CALL 0x0001c950
ADD ESP,0x10
CMP byte ptr [EDI + 0x144],0x0
JNZ 0x00039df2
MOV EDX,dword ptr [EDI + 0xd8]
MOV EAX,dword ptr [ESP + 0x58]
OR EAX,EDX
OR EAX,dword ptr [ESP + 0x10]
JZ 0x0003a318
MOVZX EAX,byte ptr [EDI + 0x131]
TEST EDX,EDX
JZ 0x0003a358
TEST AL,AL
JNZ 0x0003a1be
MOV ESI,dword ptr [EDI + 0xc60]
MOV EDX,dword ptr [EDI + 0xa4]
MOV EAX,dword ptr [EDI + 0xa0]
MOV ECX,dword ptr [EDI + 0xe4]
MOV dword ptr [ESP + 0x28],ESI
MOV ESI,EDX
AND ESI,EAX
CMP ESI,-0x1
JZ 0x0003a1a0
CMP EAX,ECX
SBB EDX,0x0
JL 0x0003a908
PUSH ECX
PUSH dword ptr [ESP + 0x2c]
PUSH 0x1
PUSH EBP
CALL 0x00027580
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0003a3a8
MOV EDX,dword ptr [EDI + 0xd8]
CMP EDX,0x1
JBE 0x0003a34a
MOV EDX,dword ptr [EBP + 0x27c]
MOV dword ptr [EDI + 0xd8],0x0
JMP 0x00039df8
MOV EAX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JNZ 0x00039903
PUSH 0x0
PUSH ECX
PUSH -0x1
PUSH EDX
CALL 0x00049010
MOV dword ptr [ESP + 0x18],EAX
ADD ESP,0x10
JMP 0x00039903
MOV EAX,dword ptr [ESP + 0x58]
TEST EAX,EAX
JLE 0x00039dd0
LEA EAX,[ESP + 0x56]
PUSH EAX
PUSH ESI
PUSH EBP
PUSH EDI
CALL EDX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0003a3a8
CMP byte ptr [ESP + 0x56],0x0
JZ 0x00039dd0
JMP 0x0003a006
CMP byte ptr [EDI + 0x131],0x0
JNZ 0x0003a08b
XOR EDX,EDX
MOV EAX,dword ptr [EDI + 0xe4]
ADD dword ptr [ESP + 0x28],EAX
ADC dword ptr [ESP + 0x2c],EDX
MOV EAX,dword ptr [ESP + 0x28]
MOV EDX,dword ptr [ESP + 0x2c]
MOV dword ptr [EDI + 0xac],EAX
MOV dword ptr [EDI + 0xb0],EDX
JMP 0x0003a08b
LEA ESI,[ESP + 0x58]
PUSH ESI
PUSH dword ptr [ESP + 0x5c]
PUSH dword ptr [EDI + 0xe8]
PUSH EBP
CALL 0x0003f2e0
ADD ESP,0x10
TEST EAX,EAX
JG 0x0003ac79
CMP EAX,-0x1
JNZ 0x0003a06a
MOV ESI,dword ptr [EBP + 0x34]
AND dword ptr [EDI + 0x12c],0xfffffffe
TEST ESI,ESI
JZ 0x0003a06a
SUB ESP,0x4
LEA EAX,[EBX + 0xfffd04bc]
PUSH ESI
PUSH EAX
PUSH dword ptr [EBP]
CALL 0x00027140
POP EAX
MOV EAX,dword ptr [EBP]
POP EDX
PUSH 0x1
PUSH dword ptr [EAX + 0x84]
CALL 0x00042890
ADD ESP,0x10
TEST AL,AL
JZ 0x0003a06a
SUB ESP,0x4
LEA EAX,[EBX + 0xfffd0137]
PUSH ESI
PUSH EAX
PUSH dword ptr [EBP]
CALL 0x00027140
SUB dword ptr [EBP + 0x330],ESI
ADD ESP,0x10
MOV byte ptr [EBP + 0x261],0x1
JMP 0x0003a06a
MOV EDX,dword ptr [EBP + 0x27c]
MOV EAX,dword ptr [EDX + 0x34]
TEST EAX,EAX
JNZ 0x00039dff
MOV EAX,dword ptr [EDI + 0x12c]
JMP 0x00039e2b
CMP dword ptr [EBP + 0x178],0x14
JNZ 0x0003a006
JMP 0x00039e3d
MOVZX EAX,byte ptr [EDI + 0x131]
LEA ESI,[ESI]
MOV EDX,dword ptr [EBP]
CMP byte ptr [EDX + 0x95d],0x0
JNZ 0x0003a4a0
MOV EDX,dword ptr [EDI + 0x118]
TEST EDX,EDX
JZ 0x0003a4a0
TEST AL,AL
JNZ 0x0003a1c7
PUSH dword ptr [ESP + 0x58]
PUSH dword ptr [EDI + 0xe8]
PUSH EDX
PUSH EBP
CALL 0x00046a70
ADD ESP,0x10
MOV dword ptr [EDI + 0xd8],0x0
TEST EAX,EAX
JZ 0x00039df2
LEA ESI,[ESI]
MOV EBP,EAX
JMP 0x00039d70
MOV EAX,dword ptr [ESP + 0x28]
MOV EDX,dword ptr [ESP + 0x2c]
MOV dword ptr [ESP + 0x58],0x0
MOV dword ptr [ESP + 0x30],EAX
MOV dword ptr [ESP + 0x34],EDX
JMP 0x0003a111
MOV EAX,dword ptr [EDI + 0xb8]
OR EAX,dword ptr [EDI + 0xb4]
JNZ 0x00039b3d
SUB ESP,0x8
PUSH 0x7
PUSH EDI
CALL 0x0001c710
ADD ESP,0x10
JMP 0x00039b3d
SUB ESP,0x4
LEA EAX,[EDI + 0xcc]
PUSH 0x0
PUSH EAX
PUSH EDI
CALL 0x0003f980
ADD ESP,0x10
TEST EAX,EAX
JS 0x0003ab80
MOV EAX,dword ptr [ESP + 0x38]
TEST byte ptr [EDI + 0x12c],0x33
SETZ byte ptr [EAX]
JMP 0x00039d70
CMP byte ptr [ESI + 0x249],0x0
JZ 0x00039e7c
SUB ESP,0x8
LEA EAX,[EBX + 0xfffd05b8]
PUSH EAX
PUSH EDI
CALL 0x00027140
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x38]
AND dword ptr [EDI + 0x12c],0xfffffffd
CMP byte ptr [EAX],0x0
JZ 0x00039e9d
LEA ESI,[ESI]
XOR EBP,EBP
JMP 0x00039d70
CMP byte ptr [EDI + 0x144],0x0
JZ 0x0003a483
CMP dword ptr [ESI + 0x28],0x4
JNZ 0x0003a910
SUB ESP,0xc
PUSH ESI
CALL 0x0001cc10
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0003a415
JMP 0x00039f19
MOV EDX,dword ptr [EBP + 0x27c]
TEST AL,AL
JNZ 0x0003a1cd
MOV ECX,dword ptr [ESP + 0x58]
MOV EAX,dword ptr [EDI + 0xe8]
TEST dword ptr [EDX + 0x40],0xc000
JZ 0x0003a990
SUB ESP,0x4
PUSH ECX
PUSH EAX
PUSH EBP
CALL 0x00055cf0
ADD ESP,0x10
JMP 0x0003a392
MOV EAX,dword ptr [EBP + 0x27c]
TEST dword ptr [EAX + 0x40],0x40003
JZ 0x0003a750
MOV ECX,dword ptr [EDI + 0x138]
TEST ECX,ECX
JZ 0x0003a524
CMP byte ptr [EBP + 0x249],0x0
JNZ 0x0003ad65
SUB ESP,0x8
LEA EAX,[EBX + 0xfffd00f0]
MOV byte ptr [EDI + 0x131],0x1
PUSH EAX
PUSH EDI
CALL 0x00027140
ADD ESP,0x10
MOV EDX,dword ptr [EDI + 0xebc]
MOV EAX,dword ptr [EDI + 0xeb8]
MOV ECX,EDX
OR ECX,EAX
JZ 0x0003a580
CMP byte ptr [EDI + 0xf8],0x0
JNZ 0x0003a580
CMP dword ptr [EDI + 0x818],0x1
JNZ 0x0003a580
CMP byte ptr [EDI + 0x131],0x0
JNZ 0x0003a580
CMP EDX,dword ptr [EDI + 0x98]
JZ 0x0003ad7f
LEA EAX,[EBX + 0xfffd045c]
PUSH EBP
PUSH EBP
MOV EBP,0x21
PUSH EAX
PUSH EDI
CALL 0x00027240
ADD ESP,0x10
JMP 0x00039d70
MOV ESI,dword ptr [EDI + 0x810]
TEST ESI,ESI
JZ 0x0003a5e0
MOV ECX,dword ptr [EDI + 0xeb4]
TEST ECX,ECX
JNZ 0x0003a5e0
SUB ESP,0x8
PUSH dword ptr [EDI + 0x11c]
PUSH EDI
CALL 0x000397f0
ADD ESP,0x10
TEST AL,AL
JNZ 0x0003a5e0
MOV EAX,dword ptr [ESP + 0x38]
MOV ESI,EBP
MOV byte ptr [EAX],0x1
LEA EAX,[EBX + 0xfffd049c]
MOV dword ptr [EDI + 0xf48],0x130
PUSH EBP
PUSH EBP
PUSH EAX
PUSH EDI
CALL 0x00027140
POP EAX
POP EDX
PUSH 0x1
PUSH ESI
CALL 0x000414c0
ADD ESP,0x10
JMP 0x00039e7c
MOV EAX,dword ptr [EDI + 0x120]
JMP 0x00039a99
MOV dword ptr [ESP + 0x8],ECX
SUB ESP,0xc
PUSH EDI
CALL 0x00039100
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JNZ 0x00039d70
MOVZX EDX,byte ptr [EDI + 0x130]
MOV EAX,dword ptr [EDI + 0xc6c]
MOV ECX,dword ptr [ESP + 0x8]
TEST DL,DL
MOV dword ptr [EDI + 0x140],EAX
JNZ 0x0003a898
CMP dword ptr [EDI + 0x110],0x2
MOV EAX,dword ptr [EDI + 0x148]
JZ 0x0003ac04
MOV EBP,dword ptr [ESI + 0x27c]
TEST dword ptr [EBP + 0x40],0x40003
JZ 0x0003a655
CMP dword ptr [EAX + 0x1a0],0x1
SETZ DL
MOV dword ptr [ESP + 0x20],ECX
SUB ESP,0x4
MOV byte ptr [ESP + 0x20],DL
LEA EAX,[ESP + 0x5c]
MOV dword ptr [ESP + 0xc],EAX
PUSH EAX
PUSH dword ptr [EDI + 0x8fc]
PUSH ESI
CALL 0x00039150
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JNZ 0x00039d70
MOV EAX,dword ptr [ESP + 0x58]
MOVZX EDX,byte ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x20]
TEST EAX,EAX
MOV dword ptr [ESP + 0x10],EAX
JZ 0x0003a898
JLE 0x0003adbc
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [EDI + 0x13c],EAX
TEST DL,DL
JNZ 0x0003a96f
CMP byte ptr [EDI + 0x927],0x0
JNZ 0x0003a6c9
CMP byte ptr [EDI + 0x7ea],0x0
JZ 0x0003a96f
MOV EAX,dword ptr [EDI + 0xcb4]
TEST EAX,EAX
JZ 0x0003acf8
XOR EBP,EBP
MOV dword ptr [ESP + 0x1c],ESI
JMP 0x0003a6f7
MOV byte ptr [EAX],DL
MOV ECX,ESI
ADD EBP,0x1
CMP dword ptr [ESP + 0x10],EBP
JZ 0x0003a94f
MOV EAX,dword ptr [EDI + 0xcb4]
MOV EDX,dword ptr [EDI + 0x140]
LEA ESI,[ECX + 0x1]
ADD EAX,ECX
MOVZX EDX,byte ptr [EDX + EBP*0x1]
CMP DL,0xa
JNZ 0x0003a6e0
MOV byte ptr [EAX],0xd
MOV EAX,dword ptr [EDI + 0xcb4]
MOV byte ptr [EAX + ECX*0x1 + 0x1],0xa
ADD ECX,0x2
CMP byte ptr [EDI + 0x7ea],0x0
JNZ 0x0003a6e4
MOV EDX,dword ptr [EDI + 0xed0]
MOV EAX,dword ptr [EDI + 0xecc]
MOV ESI,EDX
AND ESI,EAX
CMP ESI,-0x1
JZ 0x0003a6e4
ADD EAX,0x1
ADC EDX,0x0
MOV dword ptr [EDI + 0xecc],EAX
MOV dword ptr [EDI + 0xed0],EDX
JMP 0x0003a6e4
XOR EAX,EAX
JMP 0x00039a99
MOV EAX,dword ptr [ESP + 0x24]
PUSH dword ptr [EAX + 0x78]
PUSH dword ptr [EAX + 0x74]
PUSH dword ptr [EAX + 0x3c]
PUSH dword ptr [EAX + 0x38]
CALL 0x0001abe0
ADD ESP,0x10
CMP dword ptr [EDI + 0xad8],EAX
JG 0x00039c69
SUB ESP,0x8
OR dword ptr [EDI + 0x12c],0x2
MOV dword ptr [EDI + 0x110],0x0
PUSH 0x0
PUSH EDI
CALL 0x00043c20
POP EAX
LEA EAX,[EBX + 0xfffd063c]
POP EDX
PUSH EAX
PUSH EDI
CALL 0x00027140
ADD ESP,0x10
JMP 0x00039c69
SUB ESP,0x8
LEA EAX,[EBX + 0xfffd00d5]
MOV EBP,0x37
PUSH EAX
PUSH EDI
CALL 0x00027240
ADD ESP,0x10
JMP 0x00039d70
MOV EAX,dword ptr [EBP]
SUB ESP,0x8
PUSH 0x1
PUSH dword ptr [EAX + 0x84]
CALL 0x00042890
ADD ESP,0x10
TEST AL,AL
JZ 0x0003a9a8
SUB ESP,0x4
LEA EAX,[EBX + 0xfffd04e4]
PUSH dword ptr [ESP + 0x5c]
PUSH dword ptr [EDI + 0xb0]
PUSH dword ptr [EDI + 0xac]
PUSH dword ptr [EDI + 0xa4]
PUSH dword ptr [EDI + 0xa0]
PUSH dword ptr [EDI + 0x98]
PUSH dword ptr [EDI + 0x94]
PUSH dword ptr [EDI + 0xf0c]
PUSH dword ptr [ESP + 0x60]
PUSH EAX
PUSH EDI
CALL 0x00027140
MOV EAX,dword ptr [ESP + 0x60]
MOV byte ptr [EBP + 0x261],0x1
SUB EAX,ESI
ADD dword ptr [EBP + 0x330],EAX
MOV EAX,dword ptr [EDI + 0xa0]
MOV EDX,dword ptr [EDI + 0xb0]
MOV dword ptr [ESP + 0x60],EAX
MOV EAX,dword ptr [EDI + 0xac]
MOV dword ptr [ESP + 0x5c],EDX
MOV dword ptr [ESP + 0x58],EAX
ADD ESP,0x30
JMP 0x0003a0ee
CMP byte ptr [EDI + 0x147],0x0
JZ 0x00039bd7
JMP 0x00039bbb
MOV EAX,dword ptr [EDI + 0x12c]
TEST AL,0x20
JNZ 0x00039c0b
SUB ESP,0xc
AND EAX,0xfffffffd
MOV dword ptr [EDI + 0x12c],EAX
PUSH ESI
CALL 0x000647d0
ADD ESP,0x10
CMP byte ptr [ESI + 0x25b],0x0
JZ 0x00039c0b
SUB ESP,0xc
PUSH ESI
CALL 0x00039660
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JZ 0x00039c0b
JMP 0x00039d70
PUSH ECX
PUSH dword ptr [EDI + 0x140]
PUSH 0x4
PUSH EDI
CALL 0x00027090
MOV ECX,dword ptr [ESP + 0x68]
ADD ESP,0x10
JMP 0x00039b8b
PUSH EAX
JMP 0x0003a1a1
SUB ESP,0x8
LEA EAX,[EBX + 0xfffd0724]
JMP 0x00039d60
SUB ESP,0x8
LEA EAX,[EBX + 0xfffd0614]
MOV byte ptr [EDI + 0x130],0x1
PUSH EAX
PUSH EDI
CALL 0x00027140
MOV ECX,dword ptr [ESP + 0x68]
ADD ESP,0x10
JMP 0x00039bd7
MOV ESI,EBP
JMP 0x0003a00e
MOV ESI,dword ptr [ESP + 0x1c]
CMP dword ptr [ESP + 0x10],ECX
JZ 0x0003a96f
MOV EAX,dword ptr [EDI + 0xcb4]
MOV dword ptr [EDI + 0x13c],ECX
MOV dword ptr [ESP + 0x10],ECX
MOV dword ptr [EDI + 0x140],EAX
MOV EAX,dword ptr [ESI + 0x27c]
TEST dword ptr [EAX + 0x40],0x30000
JNZ 0x0003ac5a
MOV ECX,dword ptr [EDI + 0x13c]
JMP 0x00039b53
PUSH ECX
PUSH EAX
PUSH 0x1
PUSH EBP
CALL 0x00027580
ADD ESP,0x10
JMP 0x0003a392
SUB ESP,0xc
LEA EAX,[EBX + 0xfffd0550]
PUSH dword ptr [EDI + 0xb0]
PUSH dword ptr [EDI + 0xac]
PUSH dword ptr [EDI + 0xa4]
PUSH dword ptr [EDI + 0xa0]
PUSH dword ptr [EDI + 0x98]
PUSH dword ptr [EDI + 0x94]
PUSH dword ptr [ESP + 0x60]
PUSH EAX
PUSH EDI
CALL 0x00027140
JMP 0x0003a853
MOV EDX,dword ptr [ESP + 0x10]
MOV ESI,EBP
MOV EAX,dword ptr [EDI + 0x12c]
MOV dword ptr [ESP + 0x20],EDX
JMP 0x0003a00e
MOV ECX,dword ptr [EDI + 0x8f8]
MOV ESI,EBP
MOV EBP,dword ptr [ESP + 0x3c]
MOV dword ptr [ESP + 0x10],EAX
ADD ECX,dword ptr [EDI + 0x124]
MOV EDX,dword ptr [ESP + 0x58]
MOV EAX,ECX
ADD EDX,dword ptr [EDI + 0xe8]
ADD EBP,EDX
SUB EAX,EDX
MOV dword ptr [EDI + 0xe8],EDX
CMP ECX,EBP
MOV EDX,EAX
CMOVNC EDX,dword ptr [ESP + 0x3c]
MOV dword ptr [ESP + 0x58],EDX
LEA EDX,[ESP + 0x56]
PUSH EDX
LEA EAX,[ESP + 0x5c]
PUSH EAX
PUSH ESI
PUSH EDI
MOV EAX,dword ptr [ESP + 0x20]
CALL EAX
MOV EBP,EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00039d70
CMP byte ptr [ESP + 0x56],0x0
MOV EAX,dword ptr [EDI + 0x12c]
JZ 0x0003a00e
OR EAX,0x1
MOV dword ptr [EDI + 0x12c],EAX
JMP 0x0003a00e
MOV EAX,dword ptr [ESP + 0x58]
MOV ESI,EBP
TEST EAX,EAX
JLE 0x0003a008
MOV EAX,dword ptr [EBP]
SUB ESP,0x8
PUSH 0x1
PUSH dword ptr [EAX + 0x84]
CALL 0x00042890
ADD ESP,0x10
TEST AL,AL
JZ 0x0003acd9
LEA EAX,[EBX + 0xfffd03a0]
PUSH dword ptr [EDI + 0xf0c]
PUSH dword ptr [ESP + 0x5c]
PUSH EAX
PUSH EDI
CALL 0x00027140
MOV EAX,dword ptr [ESP + 0x68]
MOV byte ptr [EBP + 0x261],0x1
ADD ESP,0x10
SUB dword ptr [EBP + 0x330],EAX
JMP 0x0003a008
SUB ESP,0xc
PUSH EDI
CALL 0x00039100
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JNZ 0x00039d70
MOV EAX,dword ptr [EDI + 0xc6c]
CMP byte ptr [EDI + 0x130],0x0
MOV dword ptr [EDI + 0x13c],0x0
MOV dword ptr [EDI + 0x140],EAX
JZ 0x00039bf3
SUB ESP,0xc
AND dword ptr [EDI + 0x12c],0xfffffffd
PUSH ESI
CALL 0x000647d0
ADD ESP,0x10
CMP byte ptr [ESI + 0x25b],0x0
JZ 0x00039bf3
SUB ESP,0xc
PUSH ESI
CALL 0x00039660
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JZ 0x00039bf3
JMP 0x00039d70
SUB ESP,0x8
PUSH 0x2
PUSH EBP
MOV EBP,0x8
CALL 0x000414c0
MOV EAX,dword ptr [ESP + 0x48]
ADD ESP,0x10
MOV byte ptr [EAX],0x1
JMP 0x00039d70
MOV EAX,dword ptr [EDI + 0x94]
MOV EDX,dword ptr [EDI + 0x98]
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,dword ptr [EDI + 0xac]
MOV dword ptr [ESP + 0xc],EDX
MOV ECX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [EDI + 0xb0]
AND EAX,ECX
MOV dword ptr [ESP + 0x14],EDX
CMP EAX,-0x1
JZ 0x0003aca9
PUSH dword ptr [EDI + 0xbb0]
PUSH dword ptr [EDI + 0xbac]
MOV EDX,dword ptr [ESP + 0x2c]
PUSH dword ptr [EDX + 0x3c]
PUSH dword ptr [EDX + 0x38]
CALL 0x0001abe0
ADD ESP,0xc
PUSH dword ptr [ESP + 0x10]
PUSH dword ptr [ESP + 0x10]
PUSH dword ptr [ESP + 0x20]
PUSH dword ptr [ESP + 0x20]
PUSH EAX
LEA EAX,[EBX + 0xfffd065c]
PUSH EAX
MOV EBP,0x1c
PUSH EDI
CALL 0x00027240
ADD ESP,0x20
JMP 0x00039d70
CMP dword ptr [EAX + 0x1a0],0x2
JNZ 0x0003a63c
AND dword ptr [EDI + 0x12c],0xfffffffd
LEA EBP,[ESP + 0x48]
SUB ESP,0xc
MOV dword ptr [EDI + 0x110],0x1
PUSH EBP
CALL 0x0001ab40
MOV EAX,dword ptr [ESP + 0x54]
MOV EDX,dword ptr [ESP + 0x58]
SUB ESP,0x8
MOV ECX,dword ptr [ESP + 0x38]
MOV dword ptr [ECX + 0x74],EAX
MOV dword ptr [ECX + 0x78],EDX
PUSH 0x0
PUSH dword ptr [EDI + 0xad8]
PUSH EDI
CALL 0x00043260
ADD ESP,0x20
JMP 0x00039ea1
SUB ESP,0x8
PUSH dword ptr [ESP + 0x18]
PUSH ESI
CALL 0x00057f10
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JZ 0x0003a982
JMP 0x00039d70
CMP EAX,0x4
JZ 0x0003ad48
SUB ESP,0xc
MOV EBP,0x38
PUSH EAX
CALL 0x0003f850
ADD ESP,0xc
PUSH EAX
LEA EAX,[EBX + 0xfffd0120]
PUSH EAX
PUSH EDI
CALL 0x00027240
ADD ESP,0x10
JMP 0x00039d70
PUSH dword ptr [EDI + 0xbb0]
PUSH dword ptr [EDI + 0xbac]
MOV EAX,dword ptr [ESP + 0x2c]
PUSH dword ptr [EAX + 0x3c]
PUSH dword ptr [EAX + 0x38]
CALL 0x0001abe0
POP ECX
PUSH dword ptr [ESP + 0x20]
PUSH dword ptr [ESP + 0x20]
PUSH EAX
LEA EAX,[EBX + 0xfffd06ac]
JMP 0x0003abf0
LEA EAX,[EBX + 0xfffd03e0]
PUSH dword ptr [EDI + 0xf0c]
PUSH dword ptr [ESP + 0x5c]
PUSH EAX
PUSH EDI
CALL 0x00027140
ADD ESP,0x10
JMP 0x0003a008
MOV EAX,dword ptr [EDI + 0x8fc]
MOV dword ptr [ESP + 0x1c],ECX
SUB ESP,0xc
ADD EAX,EAX
PUSH EAX
LEA EAX,[EBX + 0x890]
CALL dword ptr [EAX]
MOV ECX,dword ptr [ESP + 0x2c]
ADD ESP,0x10
TEST EAX,EAX
MOV dword ptr [EDI + 0xcb4],EAX
JNZ 0x0003a6d7
LEA EAX,[EBX + 0xfffd05f4]
PUSH ESI
MOV EBP,0x1b
PUSH ESI
PUSH EAX
PUSH EDI
CALL 0x00027240
ADD ESP,0x10
JMP 0x00039d70
SUB ESP,0x8
LEA EAX,[EBX + 0xfffd010c]
MOV EBP,0x17
PUSH EAX
PUSH EDI
CALL 0x00027240
ADD ESP,0x10
JMP 0x00039d70
MOV EAX,dword ptr [ESP + 0x38]
AND dword ptr [EDI + 0x12c],0xfffffffe
XOR EBP,EBP
MOV byte ptr [EAX],0x1
JMP 0x00039d70
CALL 0x0007c1a0
CMP EAX,dword ptr [EDI + 0x94]
JNZ 0x0003a55d
PUSH EAX
PUSH EAX
LEA EAX,[EBX + 0xfffd0430]
PUSH EAX
PUSH EDI
CALL 0x00027140
POP EAX
POP EDX
PUSH 0x1
PUSH EBP
XOR EBP,EBP
CALL 0x000414c0
MOV EAX,dword ptr [ESP + 0x48]
AND dword ptr [EDI + 0x12c],0xfffffffe
ADD ESP,0x10
MOV byte ptr [EAX],0x1
JMP 0x00039d70
MOV EAX,dword ptr [EDI + 0x12c]
JMP 0x0003a8a6
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n\nint FUN_00039860(int param_1,undefined1 *param_2,undefined1 *param_3)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  char *pcVar6;\n  char cVar7;\n  uint uVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  uint uVar14;\n  int unaff_EBX;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined1 *puVar17;\n  int in_GS_OFFSET;\n  bool bVar18;\n  int *unaff_retaddr;\n  int aiStackY_a4 [5];\n  undefined4 uStack_84;\n  undefined1 auStack_80 [8];\n  uint local_78;\n  uint local_70 [10];\n  undefined1 *local_48;\n  undefined4 local_44;\n  undefined1 *local_3c [4];\n  undefined1 local_2a;\n  undefined4 local_28 [5];\n  undefined4 uStack_14;\n  \n  iVar13 = -1;\n  uStack_14 = 0x3986e;\n  entry();\n  local_48 = param_2;\n  local_3c[0] = param_3;\n  local_28[1] = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  local_70[5] = param_1 + 0x94;\n  local_78 = unaff_retaddr[0x158];\n  unaff_retaddr[0x158] = 0;\n  if ((*(uint *)(param_1 + 300) & 0x15) == 1) {\n    iVar13 = unaff_retaddr[0xa5];\n  }\n  iVar10 = -1;\n  if ((*(uint *)(param_1 + 300) & 0x2a) == 2) {\n    iVar10 = unaff_retaddr[0xa6];\n  }\n  if (*(int *)(*unaff_retaddr + 0xed4) == 0) {\n    if (local_78 == 0) {\n      uStack_84 = 0;\n      local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);\n    }\n  }\n  else {\n    local_78 = local_78 | 1;\n  }\n  puVar16 = auStack_80;\n  if (local_78 == 4) {\n    iVar13 = 0x37;\n    FUN_00027240(param_1,unaff_EBX + 0x47047);\n    goto LAB_00039d70;\n  }\n  local_70[4] = *(uint *)(param_1 + 300) & 1;\n  if ((local_70[4] == 0) ||\n     (((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0')))) {\n    if (((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }\n      iVar13 = *(int *)(param_1 + 0x13c);\n      if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }\nLAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n      *(undefined4 *)(puVar16 + -0x14) = 0x39c18;\n      FUN_0001ab40();\n      uVar9 = *(undefined4 *)(puVar16 + 0x48);\n      iVar13 = *(int *)(puVar16 + 0x20);\n      puVar15 = puVar16 + -4;\n      *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n      *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n      goto LAB_00039ecb;\n    }\n    FUN_0001ab40(local_3c + 1);\n    *(undefined1 **)(param_1 + 0xcc) = local_3c[0];\n    *(undefined1 **)(param_1 + 0xd0) = local_3c[1];\n    puVar4 = &uStack_84;\nLAB_00039c5c:\n    puVar15 = (undefined1 *)puVar4;\n    if (*(int *)(param_1 + 0x110) == 1) {\n      iVar13 = *(int *)(puVar15 + 0x24);\n      *(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);\n      *(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);\n      *(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);\n      *(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);\n      *(undefined4 *)(puVar15 + -0x14) = 0x3a775;\n      iVar13 = FUN_0001abe0();\n      if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }\n    }\nLAB_00039c69:\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39c72;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }\n  else {\n    local_2a = 0;\n    local_70[0] = 0;\n    *local_48 = 0;\n    local_70[3] = 100;\n    *local_3c[0] = 0;\n    local_44 = 0;\n    puVar16 = auStack_80;\n    do {\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    } while (*(int *)(puVar16 + 0x1c) != -1);\n    uVar14 = *(uint *)(param_1 + 300);\nLAB_00039e5f:\n    puVar17 = *(undefined1 **)(puVar16 + 0x44);\n    unaff_retaddr[0x158] = 1;\n    *puVar17 = 1;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }\n    puVar17 = puVar16 + 0x48;\nLAB_00039ea1:\n    *(undefined1 **)(puVar16 + -0x10) = puVar17;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39eaa;\n    FUN_0001ab40();\n    uVar9 = *(undefined4 *)(puVar16 + 0x48);\n    iVar13 = *(int *)(puVar16 + 0x20);\n    puVar15 = puVar16 + -4;\n    *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n    *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n    puVar4 = (undefined4 *)(puVar16 + -4);\n    if (*(int *)(puVar16 + 0x1c) == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    puVar4 = *(undefined4 **)(param_1 + 0x9c);\n    if (puVar4 != (undefined4 *)0x0) {\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }\n    puVar4 = *(undefined4 **)(param_1 + 0xa8);\n    if (puVar4 == (undefined4 *)0x0) goto LAB_00039c69;\n    uVar9 = *(undefined4 *)(param_1 + 0xb8);\n    *puVar4 = *(undefined4 *)(param_1 + 0xb4);\n    puVar4[1] = uVar9;\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39f0e;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }\n  if (iVar13 == 0) {\n    *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n    *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n    *(int *)(puVar16 + -0x10) = param_1;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39c90;\n    iVar13 = FUN_00033f20();\n    if (iVar13 != 0) goto LAB_00039d70;\n    if (*(int *)(param_1 + 300) == 0) {\n      if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a48c;\n      iVar10 = FUN_0001cc10();\n      if (iVar10 != 0) goto LAB_00039f19;\n    }\n    else {\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }\n    *(bool *)*(undefined4 *)(puVar16 + 0x38) = (*(byte *)(param_1 + 300) & 0x33) == 0;\n  }\n  else {\nLAB_00039f19:\n    iVar13 = 0x2a;\n  }\nLAB_00039d70:\n  if (*(int *)(puVar16 + 0x5c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar13;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined4 *)(puVar16 + -4) = 0x3ad7f;\n  FUN_0007c1a0();\n}\n\n" comment (function_definition "int FUN_00039860(int param_1,undefined1 *param_2,undefined1 *param_3)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  char *pcVar6;\n  char cVar7;\n  uint uVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  uint uVar14;\n  int unaff_EBX;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined1 *puVar17;\n  int in_GS_OFFSET;\n  bool bVar18;\n  int *unaff_retaddr;\n  int aiStackY_a4 [5];\n  undefined4 uStack_84;\n  undefined1 auStack_80 [8];\n  uint local_78;\n  uint local_70 [10];\n  undefined1 *local_48;\n  undefined4 local_44;\n  undefined1 *local_3c [4];\n  undefined1 local_2a;\n  undefined4 local_28 [5];\n  undefined4 uStack_14;\n  \n  iVar13 = -1;\n  uStack_14 = 0x3986e;\n  entry();\n  local_48 = param_2;\n  local_3c[0] = param_3;\n  local_28[1] = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  local_70[5] = param_1 + 0x94;\n  local_78 = unaff_retaddr[0x158];\n  unaff_retaddr[0x158] = 0;\n  if ((*(uint *)(param_1 + 300) & 0x15) == 1) {\n    iVar13 = unaff_retaddr[0xa5];\n  }\n  iVar10 = -1;\n  if ((*(uint *)(param_1 + 300) & 0x2a) == 2) {\n    iVar10 = unaff_retaddr[0xa6];\n  }\n  if (*(int *)(*unaff_retaddr + 0xed4) == 0) {\n    if (local_78 == 0) {\n      uStack_84 = 0;\n      local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);\n    }\n  }\n  else {\n    local_78 = local_78 | 1;\n  }\n  puVar16 = auStack_80;\n  if (local_78 == 4) {\n    iVar13 = 0x37;\n    FUN_00027240(param_1,unaff_EBX + 0x47047);\n    goto LAB_00039d70;\n  }\n  local_70[4] = *(uint *)(param_1 + 300) & 1;\n  if ((local_70[4] == 0) ||\n     (((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0')))) {\n    if (((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }\n      iVar13 = *(int *)(param_1 + 0x13c);\n      if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }\nLAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n      *(undefined4 *)(puVar16 + -0x14) = 0x39c18;\n      FUN_0001ab40();\n      uVar9 = *(undefined4 *)(puVar16 + 0x48);\n      iVar13 = *(int *)(puVar16 + 0x20);\n      puVar15 = puVar16 + -4;\n      *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n      *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n      goto LAB_00039ecb;\n    }\n    FUN_0001ab40(local_3c + 1);\n    *(undefined1 **)(param_1 + 0xcc) = local_3c[0];\n    *(undefined1 **)(param_1 + 0xd0) = local_3c[1];\n    puVar4 = &uStack_84;\nLAB_00039c5c:\n    puVar15 = (undefined1 *)puVar4;\n    if (*(int *)(param_1 + 0x110) == 1) {\n      iVar13 = *(int *)(puVar15 + 0x24);\n      *(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);\n      *(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);\n      *(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);\n      *(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);\n      *(undefined4 *)(puVar15 + -0x14) = 0x3a775;\n      iVar13 = FUN_0001abe0();\n      if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }\n    }\nLAB_00039c69:\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39c72;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }\n  else {\n    local_2a = 0;\n    local_70[0] = 0;\n    *local_48 = 0;\n    local_70[3] = 100;\n    *local_3c[0] = 0;\n    local_44 = 0;\n    puVar16 = auStack_80;\n    do {\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    } while (*(int *)(puVar16 + 0x1c) != -1);\n    uVar14 = *(uint *)(param_1 + 300);\nLAB_00039e5f:\n    puVar17 = *(undefined1 **)(puVar16 + 0x44);\n    unaff_retaddr[0x158] = 1;\n    *puVar17 = 1;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }\n    puVar17 = puVar16 + 0x48;\nLAB_00039ea1:\n    *(undefined1 **)(puVar16 + -0x10) = puVar17;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39eaa;\n    FUN_0001ab40();\n    uVar9 = *(undefined4 *)(puVar16 + 0x48);\n    iVar13 = *(int *)(puVar16 + 0x20);\n    puVar15 = puVar16 + -4;\n    *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n    *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n    puVar4 = (undefined4 *)(puVar16 + -4);\n    if (*(int *)(puVar16 + 0x1c) == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    puVar4 = *(undefined4 **)(param_1 + 0x9c);\n    if (puVar4 != (undefined4 *)0x0) {\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }\n    puVar4 = *(undefined4 **)(param_1 + 0xa8);\n    if (puVar4 == (undefined4 *)0x0) goto LAB_00039c69;\n    uVar9 = *(undefined4 *)(param_1 + 0xb8);\n    *puVar4 = *(undefined4 *)(param_1 + 0xb4);\n    puVar4[1] = uVar9;\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39f0e;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }\n  if (iVar13 == 0) {\n    *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n    *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n    *(int *)(puVar16 + -0x10) = param_1;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39c90;\n    iVar13 = FUN_00033f20();\n    if (iVar13 != 0) goto LAB_00039d70;\n    if (*(int *)(param_1 + 300) == 0) {\n      if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a48c;\n      iVar10 = FUN_0001cc10();\n      if (iVar10 != 0) goto LAB_00039f19;\n    }\n    else {\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }\n    *(bool *)*(undefined4 *)(puVar16 + 0x38) = (*(byte *)(param_1 + 300) & 0x33) == 0;\n  }\n  else {\nLAB_00039f19:\n    iVar13 = 0x2a;\n  }\nLAB_00039d70:\n  if (*(int *)(puVar16 + 0x5c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar13;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined4 *)(puVar16 + -4) = 0x3ad7f;\n  FUN_0007c1a0();\n}" primitive_type (function_declarator "FUN_00039860(int param_1,undefined1 *param_2,undefined1 *param_3)" identifier (parameter_list "(int param_1,undefined1 *param_2,undefined1 *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined1 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined1 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  uint uVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  char *pcVar6;\n  char cVar7;\n  uint uVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  uint uVar14;\n  int unaff_EBX;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined1 *puVar17;\n  int in_GS_OFFSET;\n  bool bVar18;\n  int *unaff_retaddr;\n  int aiStackY_a4 [5];\n  undefined4 uStack_84;\n  undefined1 auStack_80 [8];\n  uint local_78;\n  uint local_70 [10];\n  undefined1 *local_48;\n  undefined4 local_44;\n  undefined1 *local_3c [4];\n  undefined1 local_2a;\n  undefined4 local_28 [5];\n  undefined4 uStack_14;\n  \n  iVar13 = -1;\n  uStack_14 = 0x3986e;\n  entry();\n  local_48 = param_2;\n  local_3c[0] = param_3;\n  local_28[1] = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  local_70[5] = param_1 + 0x94;\n  local_78 = unaff_retaddr[0x158];\n  unaff_retaddr[0x158] = 0;\n  if ((*(uint *)(param_1 + 300) & 0x15) == 1) {\n    iVar13 = unaff_retaddr[0xa5];\n  }\n  iVar10 = -1;\n  if ((*(uint *)(param_1 + 300) & 0x2a) == 2) {\n    iVar10 = unaff_retaddr[0xa6];\n  }\n  if (*(int *)(*unaff_retaddr + 0xed4) == 0) {\n    if (local_78 == 0) {\n      uStack_84 = 0;\n      local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);\n    }\n  }\n  else {\n    local_78 = local_78 | 1;\n  }\n  puVar16 = auStack_80;\n  if (local_78 == 4) {\n    iVar13 = 0x37;\n    FUN_00027240(param_1,unaff_EBX + 0x47047);\n    goto LAB_00039d70;\n  }\n  local_70[4] = *(uint *)(param_1 + 300) & 1;\n  if ((local_70[4] == 0) ||\n     (((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0')))) {\n    if (((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }\n      iVar13 = *(int *)(param_1 + 0x13c);\n      if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }\nLAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n      *(undefined4 *)(puVar16 + -0x14) = 0x39c18;\n      FUN_0001ab40();\n      uVar9 = *(undefined4 *)(puVar16 + 0x48);\n      iVar13 = *(int *)(puVar16 + 0x20);\n      puVar15 = puVar16 + -4;\n      *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n      *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n      goto LAB_00039ecb;\n    }\n    FUN_0001ab40(local_3c + 1);\n    *(undefined1 **)(param_1 + 0xcc) = local_3c[0];\n    *(undefined1 **)(param_1 + 0xd0) = local_3c[1];\n    puVar4 = &uStack_84;\nLAB_00039c5c:\n    puVar15 = (undefined1 *)puVar4;\n    if (*(int *)(param_1 + 0x110) == 1) {\n      iVar13 = *(int *)(puVar15 + 0x24);\n      *(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);\n      *(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);\n      *(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);\n      *(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);\n      *(undefined4 *)(puVar15 + -0x14) = 0x3a775;\n      iVar13 = FUN_0001abe0();\n      if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }\n    }\nLAB_00039c69:\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39c72;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }\n  else {\n    local_2a = 0;\n    local_70[0] = 0;\n    *local_48 = 0;\n    local_70[3] = 100;\n    *local_3c[0] = 0;\n    local_44 = 0;\n    puVar16 = auStack_80;\n    do {\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    } while (*(int *)(puVar16 + 0x1c) != -1);\n    uVar14 = *(uint *)(param_1 + 300);\nLAB_00039e5f:\n    puVar17 = *(undefined1 **)(puVar16 + 0x44);\n    unaff_retaddr[0x158] = 1;\n    *puVar17 = 1;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }\n    puVar17 = puVar16 + 0x48;\nLAB_00039ea1:\n    *(undefined1 **)(puVar16 + -0x10) = puVar17;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39eaa;\n    FUN_0001ab40();\n    uVar9 = *(undefined4 *)(puVar16 + 0x48);\n    iVar13 = *(int *)(puVar16 + 0x20);\n    puVar15 = puVar16 + -4;\n    *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n    *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n    puVar4 = (undefined4 *)(puVar16 + -4);\n    if (*(int *)(puVar16 + 0x1c) == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    puVar4 = *(undefined4 **)(param_1 + 0x9c);\n    if (puVar4 != (undefined4 *)0x0) {\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }\n    puVar4 = *(undefined4 **)(param_1 + 0xa8);\n    if (puVar4 == (undefined4 *)0x0) goto LAB_00039c69;\n    uVar9 = *(undefined4 *)(param_1 + 0xb8);\n    *puVar4 = *(undefined4 *)(param_1 + 0xb4);\n    puVar4[1] = uVar9;\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39f0e;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }\n  if (iVar13 == 0) {\n    *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n    *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n    *(int *)(puVar16 + -0x10) = param_1;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39c90;\n    iVar13 = FUN_00033f20();\n    if (iVar13 != 0) goto LAB_00039d70;\n    if (*(int *)(param_1 + 300) == 0) {\n      if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a48c;\n      iVar10 = FUN_0001cc10();\n      if (iVar10 != 0) goto LAB_00039f19;\n    }\n    else {\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }\n    *(bool *)*(undefined4 *)(puVar16 + 0x38) = (*(byte *)(param_1 + 300) & 0x33) == 0;\n  }\n  else {\nLAB_00039f19:\n    iVar13 = 0x2a;\n  }\nLAB_00039d70:\n  if (*(int *)(puVar16 + 0x5c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar13;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined4 *)(puVar16 + -4) = 0x3ad7f;\n  FUN_0007c1a0();\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int unaff_EBX;" primitive_type identifier ;) (declaration "undefined1 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined1 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "undefined1 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar18;" primitive_type identifier ;) (declaration "int *unaff_retaddr;" primitive_type (pointer_declarator "*unaff_retaddr" * identifier) ;) (declaration "int aiStackY_a4 [5];" primitive_type (array_declarator "aiStackY_a4 [5]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_84;" type_identifier identifier ;) (declaration "undefined1 auStack_80 [8];" type_identifier (array_declarator "auStack_80 [8]" identifier [ number_literal ]) ;) (declaration "uint local_78;" type_identifier identifier ;) (declaration "uint local_70 [10];" type_identifier (array_declarator "local_70 [10]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined1 *local_3c [4];" type_identifier (pointer_declarator "*local_3c [4]" * (array_declarator "local_3c [4]" identifier [ number_literal ])) ;) (declaration "undefined1 local_2a;" type_identifier identifier ;) (declaration "undefined4 local_28 [5];" type_identifier (array_declarator "local_28 [5]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "iVar13 = -1;" (assignment_expression "iVar13 = -1" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x3986e;" (assignment_expression "uStack_14 = 0x3986e" identifier = number_literal) ;) (expression_statement "entry();" (call_expression "entry()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_48 = param_2;" (assignment_expression "local_48 = param_2" identifier = identifier) ;) (expression_statement "local_3c[0] = param_3;" (assignment_expression "local_3c[0] = param_3" (subscript_expression "local_3c[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_28[1] = *(undefined4 *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_28[1] = *(undefined4 *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_28[1]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(in_GS_OFFSET + 0x14)" * (cast_expression "(undefined4 *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_70[5] = param_1 + 0x94;" (assignment_expression "local_70[5] = param_1 + 0x94" (subscript_expression "local_70[5]" identifier [ number_literal ]) = (binary_expression "param_1 + 0x94" identifier + number_literal)) ;) (expression_statement "local_78 = unaff_retaddr[0x158];" (assignment_expression "local_78 = unaff_retaddr[0x158]" identifier = (subscript_expression "unaff_retaddr[0x158]" identifier [ number_literal ])) ;) (expression_statement "unaff_retaddr[0x158] = 0;" (assignment_expression "unaff_retaddr[0x158] = 0" (subscript_expression "unaff_retaddr[0x158]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if ((*(uint *)(param_1 + 300) & 0x15) == 1) {\n    iVar13 = unaff_retaddr[0xa5];\n  }" if (parenthesized_expression "((*(uint *)(param_1 + 300) & 0x15) == 1)" ( (binary_expression "(*(uint *)(param_1 + 300) & 0x15) == 1" (parenthesized_expression "(*(uint *)(param_1 + 300) & 0x15)" ( (binary_expression "*(uint *)(param_1 + 300) & 0x15" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar13 = unaff_retaddr[0xa5];\n  }" { (expression_statement "iVar13 = unaff_retaddr[0xa5];" (assignment_expression "iVar13 = unaff_retaddr[0xa5]" identifier = (subscript_expression "unaff_retaddr[0xa5]" identifier [ number_literal ])) ;) })) (expression_statement "iVar10 = -1;" (assignment_expression "iVar10 = -1" identifier = number_literal) ;) (if_statement "if ((*(uint *)(param_1 + 300) & 0x2a) == 2) {\n    iVar10 = unaff_retaddr[0xa6];\n  }" if (parenthesized_expression "((*(uint *)(param_1 + 300) & 0x2a) == 2)" ( (binary_expression "(*(uint *)(param_1 + 300) & 0x2a) == 2" (parenthesized_expression "(*(uint *)(param_1 + 300) & 0x2a)" ( (binary_expression "*(uint *)(param_1 + 300) & 0x2a" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar10 = unaff_retaddr[0xa6];\n  }" { (expression_statement "iVar10 = unaff_retaddr[0xa6];" (assignment_expression "iVar10 = unaff_retaddr[0xa6]" identifier = (subscript_expression "unaff_retaddr[0xa6]" identifier [ number_literal ])) ;) })) (if_statement "if (*(int *)(*unaff_retaddr + 0xed4) == 0) {\n    if (local_78 == 0) {\n      uStack_84 = 0;\n      local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);\n    }\n  }\n  else {\n    local_78 = local_78 | 1;\n  }" if (parenthesized_expression "(*(int *)(*unaff_retaddr + 0xed4) == 0)" ( (binary_expression "*(int *)(*unaff_retaddr + 0xed4) == 0" (pointer_expression "*(int *)(*unaff_retaddr + 0xed4)" * (cast_expression "(int *)(*unaff_retaddr + 0xed4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*unaff_retaddr + 0xed4)" ( (binary_expression "*unaff_retaddr + 0xed4" (pointer_expression "*unaff_retaddr" * identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n    if (local_78 == 0) {\n      uStack_84 = 0;\n      local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);\n    }\n  }" { (if_statement "if (local_78 == 0) {\n      uStack_84 = 0;\n      local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);\n    }" if (parenthesized_expression "(local_78 == 0)" ( (binary_expression "local_78 == 0" identifier == number_literal) )) (compound_statement "{\n      uStack_84 = 0;\n      local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);\n    }" { (expression_statement "uStack_84 = 0;" (assignment_expression "uStack_84 = 0" identifier = number_literal) ;) (expression_statement "local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);" (assignment_expression "local_78 = FUN_00049010(iVar13,0xffffffff,iVar10)" identifier = (call_expression "FUN_00049010(iVar13,0xffffffff,iVar10)" identifier (argument_list "(iVar13,0xffffffff,iVar10)" ( identifier , number_literal , identifier )))) ;) })) }) (else_clause "else {\n    local_78 = local_78 | 1;\n  }" else (compound_statement "{\n    local_78 = local_78 | 1;\n  }" { (expression_statement "local_78 = local_78 | 1;" (assignment_expression "local_78 = local_78 | 1" identifier = (binary_expression "local_78 | 1" identifier | number_literal)) ;) }))) (expression_statement "puVar16 = auStack_80;" (assignment_expression "puVar16 = auStack_80" identifier = identifier) ;) (if_statement "if (local_78 == 4) {\n    iVar13 = 0x37;\n    FUN_00027240(param_1,unaff_EBX + 0x47047);\n    goto LAB_00039d70;\n  }" if (parenthesized_expression "(local_78 == 4)" ( (binary_expression "local_78 == 4" identifier == number_literal) )) (compound_statement "{\n    iVar13 = 0x37;\n    FUN_00027240(param_1,unaff_EBX + 0x47047);\n    goto LAB_00039d70;\n  }" { (expression_statement "iVar13 = 0x37;" (assignment_expression "iVar13 = 0x37" identifier = number_literal) ;) (expression_statement "FUN_00027240(param_1,unaff_EBX + 0x47047);" (call_expression "FUN_00027240(param_1,unaff_EBX + 0x47047)" identifier (argument_list "(param_1,unaff_EBX + 0x47047)" ( identifier , (binary_expression "unaff_EBX + 0x47047" identifier + number_literal) ))) ;) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (expression_statement "local_70[4] = *(uint *)(param_1 + 300) & 1;" (assignment_expression "local_70[4] = *(uint *)(param_1 + 300) & 1" (subscript_expression "local_70[4]" identifier [ number_literal ]) = (binary_expression "*(uint *)(param_1 + 300) & 1" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if ((local_70[4] == 0) ||\n     (((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0')))) {\n    if (((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }\n      iVar13 = *(int *)(param_1 + 0x13c);\n      if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }\nLAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n      *(undefined4 *)(puVar16 + -0x14) = 0x39c18;\n      FUN_0001ab40();\n      uVar9 = *(undefined4 *)(puVar16 + 0x48);\n      iVar13 = *(int *)(puVar16 + 0x20);\n      puVar15 = puVar16 + -4;\n      *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n      *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n      goto LAB_00039ecb;\n    }\n    FUN_0001ab40(local_3c + 1);\n    *(undefined1 **)(param_1 + 0xcc) = local_3c[0];\n    *(undefined1 **)(param_1 + 0xd0) = local_3c[1];\n    puVar4 = &uStack_84;\nLAB_00039c5c:\n    puVar15 = (undefined1 *)puVar4;\n    if (*(int *)(param_1 + 0x110) == 1) {\n      iVar13 = *(int *)(puVar15 + 0x24);\n      *(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);\n      *(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);\n      *(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);\n      *(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);\n      *(undefined4 *)(puVar15 + -0x14) = 0x3a775;\n      iVar13 = FUN_0001abe0();\n      if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }\n    }\nLAB_00039c69:\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39c72;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }\n  else {\n    local_2a = 0;\n    local_70[0] = 0;\n    *local_48 = 0;\n    local_70[3] = 100;\n    *local_3c[0] = 0;\n    local_44 = 0;\n    puVar16 = auStack_80;\n    do {\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    } while (*(int *)(puVar16 + 0x1c) != -1);\n    uVar14 = *(uint *)(param_1 + 300);\nLAB_00039e5f:\n    puVar17 = *(undefined1 **)(puVar16 + 0x44);\n    unaff_retaddr[0x158] = 1;\n    *puVar17 = 1;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }\n    puVar17 = puVar16 + 0x48;\nLAB_00039ea1:\n    *(undefined1 **)(puVar16 + -0x10) = puVar17;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39eaa;\n    FUN_0001ab40();\n    uVar9 = *(undefined4 *)(puVar16 + 0x48);\n    iVar13 = *(int *)(puVar16 + 0x20);\n    puVar15 = puVar16 + -4;\n    *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n    *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n    puVar4 = (undefined4 *)(puVar16 + -4);\n    if (*(int *)(puVar16 + 0x1c) == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    puVar4 = *(undefined4 **)(param_1 + 0x9c);\n    if (puVar4 != (undefined4 *)0x0) {\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }\n    puVar4 = *(undefined4 **)(param_1 + 0xa8);\n    if (puVar4 == (undefined4 *)0x0) goto LAB_00039c69;\n    uVar9 = *(undefined4 *)(param_1 + 0xb8);\n    *puVar4 = *(undefined4 *)(param_1 + 0xb4);\n    puVar4[1] = uVar9;\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39f0e;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }" if (parenthesized_expression "((local_70[4] == 0) ||\n     (((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0'))))" ( (binary_expression "(local_70[4] == 0) ||\n     (((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0')))" (parenthesized_expression "(local_70[4] == 0)" ( (binary_expression "local_70[4] == 0" (subscript_expression "local_70[4]" identifier [ number_literal ]) == number_literal) )) || (parenthesized_expression "(((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0')))" ( (parenthesized_expression "((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0'))" ( (binary_expression "(local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0')" (binary_expression "(local_78 & 1) == 0" (parenthesized_expression "(local_78 & 1)" ( (binary_expression "local_78 & 1" identifier & number_literal) )) == number_literal) && (parenthesized_expression "(*(char *)((int)unaff_retaddr + 0x261) == '\0')" ( (binary_expression "*(char *)((int)unaff_retaddr + 0x261) == '\0'" (pointer_expression "*(char *)((int)unaff_retaddr + 0x261)" * (cast_expression "(char *)((int)unaff_retaddr + 0x261)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_retaddr + 0x261)" ( (binary_expression "(int)unaff_retaddr + 0x261" (cast_expression "(int)unaff_retaddr" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) ))) )) (compound_statement "{\n    if (((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }\n      iVar13 = *(int *)(param_1 + 0x13c);\n      if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }\nLAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n      *(undefined4 *)(puVar16 + -0x14) = 0x39c18;\n      FUN_0001ab40();\n      uVar9 = *(undefined4 *)(puVar16 + 0x48);\n      iVar13 = *(int *)(puVar16 + 0x20);\n      puVar15 = puVar16 + -4;\n      *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n      *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n      goto LAB_00039ecb;\n    }\n    FUN_0001ab40(local_3c + 1);\n    *(undefined1 **)(param_1 + 0xcc) = local_3c[0];\n    *(undefined1 **)(param_1 + 0xd0) = local_3c[1];\n    puVar4 = &uStack_84;\nLAB_00039c5c:\n    puVar15 = (undefined1 *)puVar4;\n    if (*(int *)(param_1 + 0x110) == 1) {\n      iVar13 = *(int *)(puVar15 + 0x24);\n      *(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);\n      *(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);\n      *(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);\n      *(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);\n      *(undefined4 *)(puVar15 + -0x14) = 0x3a775;\n      iVar13 = FUN_0001abe0();\n      if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }\n    }\nLAB_00039c69:\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39c72;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }" { (if_statement "if (((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }\n      iVar13 = *(int *)(param_1 + 0x13c);\n      if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }\nLAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n      *(undefined4 *)(puVar16 + -0x14) = 0x39c18;\n      FUN_0001ab40();\n      uVar9 = *(undefined4 *)(puVar16 + 0x48);\n      iVar13 = *(int *)(puVar16 + 0x20);\n      puVar15 = puVar16 + -4;\n      *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n      *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n      goto LAB_00039ecb;\n    }" if (parenthesized_expression "(((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0))" ( (binary_expression "((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)" (parenthesized_expression "((*(uint *)(param_1 + 300) & 2) != 0)" ( (binary_expression "(*(uint *)(param_1 + 300) & 2) != 0" (parenthesized_expression "(*(uint *)(param_1 + 300) & 2)" ( (binary_expression "*(uint *)(param_1 + 300) & 2" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)" ( (comma_expression "local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0" (assignment_expression "local_70[4] = 0" (subscript_expression "local_70[4]" identifier [ number_literal ]) = number_literal) , (comma_expression "puVar16 = auStack_80, (local_78 & 2) != 0" (assignment_expression "puVar16 = auStack_80" identifier = identifier) , (binary_expression "(local_78 & 2) != 0" (parenthesized_expression "(local_78 & 2)" ( (binary_expression "local_78 & 2" identifier & number_literal) )) != number_literal))) ))) )) (compound_statement "{\nLAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }\n      iVar13 = *(int *)(param_1 + 0x13c);\n      if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }\nLAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n      *(undefined4 *)(puVar16 + -0x14) = 0x39c18;\n      FUN_0001ab40();\n      uVar9 = *(undefined4 *)(puVar16 + 0x48);\n      iVar13 = *(int *)(puVar16 + 0x20);\n      puVar15 = puVar16 + -4;\n      *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n      *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n      goto LAB_00039ecb;\n    }" { (labeled_statement "LAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }" statement_identifier : (if_statement "if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }" if (parenthesized_expression "((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0))" ( (binary_expression "(*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)" (parenthesized_expression "(*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0)" ( (binary_expression "*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0" (binary_expression "*(int *)(param_1 + 0xb0) == 0" (pointer_expression "*(int *)(param_1 + 0xb0)" * (cast_expression "(int *)(param_1 + 0xb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) )))) == number_literal) && (binary_expression "*(int *)(param_1 + 0xac) == 0" (pointer_expression "*(int *)(param_1 + 0xac)" * (cast_expression "(int *)(param_1 + 0xac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) )))) == number_literal)) )) && (parenthesized_expression "(*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)" ( (binary_expression "*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0" (binary_expression "*(int *)(param_1 + 0xb8) == 0" (pointer_expression "*(int *)(param_1 + 0xb8)" * (cast_expression "(int *)(param_1 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb8)" ( (binary_expression "param_1 + 0xb8" identifier + number_literal) )))) == number_literal) && (binary_expression "*(int *)(param_1 + 0xb4) == 0" (pointer_expression "*(int *)(param_1 + 0xb4)" * (cast_expression "(int *)(param_1 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb4)" ( (binary_expression "param_1 + 0xb4" identifier + number_literal) )))) == number_literal)) ))) )) (compound_statement "{\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }" { (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 7;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 7" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a3ed" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001c710();" (call_expression "FUN_0001c710()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar13 = *(int *)(param_1 + 0x13c);" (assignment_expression "iVar13 = *(int *)(param_1 + 0x13c)" identifier = (pointer_expression "*(int *)(param_1 + 0x13c)" * (cast_expression "(int *)(param_1 + 0x13c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x13c)" ( (binary_expression "param_1 + 0x13c" identifier + number_literal) ))))) ;) (if_statement "if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }" { (expression_statement "*(undefined4 *)(puVar16 + 8) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + 8) = 0" (pointer_expression "*(undefined4 *)(puVar16 + 8)" * (cast_expression "(undefined4 *)(puVar16 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a5fd" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00039100();" (assignment_expression "iVar13 = FUN_00039100()" identifier = (call_expression "FUN_00039100()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (expression_statement "uVar9 = *(undefined4 *)(puVar16 + 8);" (assignment_expression "uVar9 = *(undefined4 *)(puVar16 + 8)" identifier = (pointer_expression "*(undefined4 *)(puVar16 + 8)" * (cast_expression "(undefined4 *)(puVar16 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);" (assignment_expression "*(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c)" (pointer_expression "*(undefined4 *)(param_1 + 0x140)" * (cast_expression "(undefined4 *)(param_1 + 0x140)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xc6c)" * (cast_expression "(undefined4 *)(param_1 + 0xc6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc6c)" ( (binary_expression "param_1 + 0xc6c" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }" if (parenthesized_expression "(*(char *)(param_1 + 0x130) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x130) == '\0'" (pointer_expression "*(char *)(param_1 + 0x130)" * (cast_expression "(char *)(param_1 + 0x130)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }" { (if_statement "if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }" if (parenthesized_expression "((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             )" ( (binary_expression "(*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)" (parenthesized_expression "(*(int *)(param_1 + 0x110) == 2)" ( (binary_expression "*(int *)(param_1 + 0x110) == 2" (pointer_expression "*(int *)(param_1 + 0x110)" * (cast_expression "(int *)(param_1 + 0x110)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2" (pointer_expression "*(int *)(*(int *)(param_1 + 0x148) + 0x1a0)" * (cast_expression "(int *)(*(int *)(param_1 + 0x148) + 0x1a0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x148) + 0x1a0)" ( (binary_expression "*(int *)(param_1 + 0x148) + 0x1a0" (pointer_expression "*(int *)(param_1 + 0x148)" * (cast_expression "(int *)(param_1 + 0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x148)" ( (binary_expression "param_1 + 0x148" identifier + number_literal) )))) + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }" { (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffd" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "puVar17 = puVar16 + 0x48;" (assignment_expression "puVar17 = puVar16 + 0x48" identifier = (binary_expression "puVar16 + 0x48" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(param_1 + 0x110) = 1;" (assignment_expression "*(undefined4 *)(param_1 + 0x110) = 1" (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 **)(puVar16 + -0x10) = puVar17;" (assignment_expression "*(undefined1 **)(puVar16 + -0x10) = puVar17" (pointer_expression "*(undefined1 **)(puVar16 + -0x10)" * (cast_expression "(undefined1 **)(puVar16 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ac2f" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001ab40();" (call_expression "FUN_0001ab40()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar9 = *(undefined4 *)(puVar16 + 0x48);" (assignment_expression "uVar9 = *(undefined4 *)(puVar16 + 0x48)" identifier = (pointer_expression "*(undefined4 *)(puVar16 + 0x48)" * (cast_expression "(undefined4 *)(puVar16 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x48)" ( (binary_expression "puVar16 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = *(int *)(puVar16 + 0x20);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x20)" identifier = (pointer_expression "*(int *)(puVar16 + 0x20)" * (cast_expression "(int *)(puVar16 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);" (assignment_expression "*(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44)" (pointer_expression "*(undefined4 *)(iVar13 + 0x74)" * (cast_expression "(undefined4 *)(iVar13 + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x74)" ( (binary_expression "iVar13 + 0x74" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x44)" * (cast_expression "(undefined4 *)(puVar16 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x44)" ( (binary_expression "puVar16 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x78) = uVar9;" (assignment_expression "*(undefined4 *)(iVar13 + 0x78) = uVar9" (pointer_expression "*(undefined4 *)(iVar13 + 0x78)" * (cast_expression "(undefined4 *)(iVar13 + 0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x78)" ( (binary_expression "iVar13 + 0x78" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x1c) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + -0x1c) = 0" (pointer_expression "*(undefined4 *)(puVar16 + -0x1c)" * (cast_expression "(undefined4 *)(puVar16 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);" (assignment_expression "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8)" (pointer_expression "*(undefined4 *)(puVar16 + -0x20)" * (cast_expression "(undefined4 *)(puVar16 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x20)" ( (binary_expression "puVar16 + -0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xad8)" * (cast_expression "(undefined4 *)(param_1 + 0xad8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xad8)" ( (binary_expression "param_1 + 0xad8" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + -0x24) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x24) = param_1" (pointer_expression "*(int *)(puVar16 + -0x24)" * (cast_expression "(int *)(puVar16 + -0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x24)" ( (binary_expression "puVar16 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x28) = 0x3ac52;" (assignment_expression "*(undefined4 *)(puVar16 + -0x28) = 0x3ac52" (pointer_expression "*(undefined4 *)(puVar16 + -0x28)" * (cast_expression "(undefined4 *)(puVar16 + -0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00043260();" (call_expression "FUN_00043260()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar16 = puVar16 + -4;" (assignment_expression "puVar16 = puVar16 + -4" identifier = (binary_expression "puVar16 + -4" identifier + number_literal)) ;) (goto_statement "goto LAB_00039ea1;" goto statement_identifier ;) })) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;) (if_statement "if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }" if (parenthesized_expression "((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0)" ( (binary_expression "(*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0" (parenthesized_expression "(*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003)" ( (binary_expression "*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003" (pointer_expression "*(uint *)(unaff_retaddr[0x9f] + 0x40)" * (cast_expression "(uint *)(unaff_retaddr[0x9f] + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr[0x9f] + 0x40)" ( (binary_expression "unaff_retaddr[0x9f] + 0x40" (subscript_expression "unaff_retaddr[0x9f]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }" { (expression_statement "bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;" (assignment_expression "bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1" identifier = (binary_expression "*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1" (pointer_expression "*(int *)(*(int *)(param_1 + 0x148) + 0x1a0)" * (cast_expression "(int *)(*(int *)(param_1 + 0x148) + 0x1a0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x148) + 0x1a0)" ( (binary_expression "*(int *)(param_1 + 0x148) + 0x1a0" (pointer_expression "*(int *)(param_1 + 0x148)" * (cast_expression "(int *)(param_1 + 0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x148)" ( (binary_expression "param_1 + 0x148" identifier + number_literal) )))) + number_literal) )))) == number_literal)) ;) })) (expression_statement "*(undefined4 *)(puVar16 + 0x20) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + 0x20) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + 0x20)" * (cast_expression "(undefined4 *)(puVar16 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar16[0x1c] = bVar18;" (assignment_expression "puVar16[0x1c] = bVar18" (subscript_expression "puVar16[0x1c]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + 8) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + 8)" * (cast_expression "(undefined1 **)(puVar16 + 8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x58" identifier + number_literal)) ;) (expression_statement "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + -8)" * (cast_expression "(undefined1 **)(puVar16 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x58" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x8fc)" * (cast_expression "(undefined4 *)(param_1 + 0x8fc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x8fc)" ( (binary_expression "param_1 + 0x8fc" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a675;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a675" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00039150();" (assignment_expression "iVar13 = FUN_00039150()" identifier = (call_expression "FUN_00039150()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (expression_statement "iVar13 = *(int *)(puVar16 + 0x58);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x58)" identifier = (pointer_expression "*(int *)(puVar16 + 0x58)" * (cast_expression "(int *)(puVar16 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "cVar7 = puVar16[0x1c];" (assignment_expression "cVar7 = puVar16[0x1c]" identifier = (subscript_expression "puVar16[0x1c]" identifier [ number_literal ])) ;) (expression_statement "iVar10 = *(int *)(puVar16 + 0x20);" (assignment_expression "iVar10 = *(int *)(puVar16 + 0x20)" identifier = (pointer_expression "*(int *)(puVar16 + 0x20)" * (cast_expression "(int *)(puVar16 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + 0x10) = iVar13;" (assignment_expression "*(int *)(puVar16 + 0x10) = iVar13" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar13 == 0) goto LAB_0003a898;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0003a898;" goto statement_identifier ;)) (if_statement "if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }" if (parenthesized_expression "(0 < iVar13)" ( (binary_expression "0 < iVar13" number_literal < identifier) )) (compound_statement "{\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }" { (expression_statement "*(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);" (assignment_expression "*(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10)" (pointer_expression "*(undefined4 *)(param_1 + 0x13c)" * (cast_expression "(undefined4 *)(param_1 + 0x13c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x13c)" ( (binary_expression "param_1 + 0x13c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" * (cast_expression "(undefined4 *)(puVar16 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }" if (parenthesized_expression "((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0'))))" ( (binary_expression "(cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))" (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))" ( (parenthesized_expression "(*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0'))" ( (binary_expression "*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')" (binary_expression "*(char *)(param_1 + 0x927) != '\0'" (pointer_expression "*(char *)(param_1 + 0x927)" * (cast_expression "(char *)(param_1 + 0x927)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x927)" ( (binary_expression "param_1 + 0x927" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(*(char *)(param_1 + 0x7ea) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x7ea) != '\0'" (pointer_expression "*(char *)(param_1 + 0x7ea)" * (cast_expression "(char *)(param_1 + 0x7ea)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x7ea)" ( (binary_expression "param_1 + 0x7ea" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) ))) )) (compound_statement "{\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }" { (expression_statement "iVar13 = *(int *)(param_1 + 0xcb4);" (assignment_expression "iVar13 = *(int *)(param_1 + 0xcb4)" identifier = (pointer_expression "*(int *)(param_1 + 0xcb4)" * (cast_expression "(int *)(param_1 + 0xcb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xcb4)" ( (binary_expression "param_1 + 0xcb4" identifier + number_literal) ))))) ;) (if_statement "if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }" { (expression_statement "iVar13 = *(int *)(param_1 + 0x8fc);" (assignment_expression "iVar13 = *(int *)(param_1 + 0x8fc)" identifier = (pointer_expression "*(int *)(param_1 + 0x8fc)" * (cast_expression "(int *)(param_1 + 0x8fc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x8fc)" ( (binary_expression "param_1 + 0x8fc" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + 0x1c) = iVar10;" (assignment_expression "*(int *)(puVar16 + 0x1c) = iVar10" (pointer_expression "*(int *)(puVar16 + 0x1c)" * (cast_expression "(int *)(puVar16 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0x10) = iVar13 * 2;" (assignment_expression "*(int *)(puVar16 + -0x10) = iVar13 * 2" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (binary_expression "iVar13 * 2" identifier * number_literal)) ;) (expression_statement "pcVar3 = *(code **)(unaff_EBX + 0x77802);" (assignment_expression "pcVar3 = *(code **)(unaff_EBX + 0x77802)" identifier = (pointer_expression "*(code **)(unaff_EBX + 0x77802)" * (cast_expression "(code **)(unaff_EBX + 0x77802)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EBX + 0x77802)" ( (binary_expression "unaff_EBX + 0x77802" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ad10;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ad10" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = (*pcVar3)();" (assignment_expression "iVar13 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar10 = *(int *)(puVar16 + 0x1c);" (assignment_expression "iVar10 = *(int *)(puVar16 + 0x1c)" identifier = (pointer_expression "*(int *)(puVar16 + 0x1c)" * (cast_expression "(int *)(puVar16 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 0xcb4) = iVar13;" (assignment_expression "*(int *)(param_1 + 0xcb4) = iVar13" (pointer_expression "*(int *)(param_1 + 0xcb4)" * (cast_expression "(int *)(param_1 + 0xcb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xcb4)" ( (binary_expression "param_1 + 0xcb4" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }" { (expression_statement "*(int **)(puVar16 + -4) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -4) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -4)" * (cast_expression "(int **)(puVar16 + -4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar13 = 0x1b;" (assignment_expression "iVar13 = 0x1b" identifier = number_literal) ;) (expression_statement "*(int **)(puVar16 + -8) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -8) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -8)" * (cast_expression "(int **)(puVar16 + -8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "unaff_EBX + 0x47566" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ad39;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ad39" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027240();" (call_expression "FUN_00027240()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) })) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (expression_statement "*(int **)(puVar16 + 0x1c) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + 0x1c) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + 0x1c)" * (cast_expression "(int **)(puVar16 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) )))) = identifier) ;) (while_statement "while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }" { (expression_statement "iVar12 = iVar10 + 1;" (assignment_expression "iVar12 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);" (assignment_expression "cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11)" identifier = (pointer_expression "*(char *)(*(int *)(param_1 + 0x140) + iVar11)" * (cast_expression "(char *)(*(int *)(param_1 + 0x140) + iVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x140) + iVar11)" ( (binary_expression "*(int *)(param_1 + 0x140) + iVar11" (pointer_expression "*(int *)(param_1 + 0x140)" * (cast_expression "(int *)(param_1 + 0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) + identifier) ))))) ;) (if_statement "if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }" if (parenthesized_expression "(cVar7 == '\n')" ( (binary_expression "cVar7 == '\n'" identifier == (char_literal "'\n'" ' escape_sequence ')) )) (compound_statement "{\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }" { (expression_statement "*(char *)(iVar13 + iVar10) = '\r';" (assignment_expression "*(char *)(iVar13 + iVar10) = '\r'" (pointer_expression "*(char *)(iVar13 + iVar10)" * (cast_expression "(char *)(iVar13 + iVar10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + iVar10)" ( (binary_expression "iVar13 + iVar10" identifier + identifier) )))) = (char_literal "'\r'" ' escape_sequence ')) ;) (expression_statement "*(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;" (assignment_expression "*(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10" (pointer_expression "*(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10)" * (cast_expression "(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0xcb4) + 1 + iVar10)" ( (binary_expression "*(int *)(param_1 + 0xcb4) + 1 + iVar10" (binary_expression "*(int *)(param_1 + 0xcb4) + 1" (pointer_expression "*(int *)(param_1 + 0xcb4)" * (cast_expression "(int *)(param_1 + 0xcb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xcb4)" ( (binary_expression "param_1 + 0xcb4" identifier + number_literal) )))) + number_literal) + identifier) )))) = number_literal) ;) (expression_statement "iVar12 = iVar10 + 2;" (assignment_expression "iVar12 = iVar10 + 2" identifier = (binary_expression "iVar10 + 2" identifier + number_literal)) ;) (if_statement "if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }" if (parenthesized_expression "(*(char *)(param_1 + 0x7ea) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x7ea) == '\0'" (pointer_expression "*(char *)(param_1 + 0x7ea)" * (cast_expression "(char *)(param_1 + 0x7ea)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x7ea)" ( (binary_expression "param_1 + 0x7ea" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }" { (expression_statement "uVar14 = *(uint *)(param_1 + 0xecc);" (assignment_expression "uVar14 = *(uint *)(param_1 + 0xecc)" identifier = (pointer_expression "*(uint *)(param_1 + 0xecc)" * (cast_expression "(uint *)(param_1 + 0xecc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xecc)" ( (binary_expression "param_1 + 0xecc" identifier + number_literal) ))))) ;) (if_statement "if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }" if (parenthesized_expression "((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff)" ( (binary_expression "(*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff" (parenthesized_expression "(*(uint *)(param_1 + 0xed0) & uVar14)" ( (binary_expression "*(uint *)(param_1 + 0xed0) & uVar14" (pointer_expression "*(uint *)(param_1 + 0xed0)" * (cast_expression "(uint *)(param_1 + 0xed0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xed0)" ( (binary_expression "param_1 + 0xed0" identifier + number_literal) )))) & identifier) )) != number_literal) )) (compound_statement "{\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }" { (expression_statement "*(uint *)(param_1 + 0xecc) = uVar14 + 1;" (assignment_expression "*(uint *)(param_1 + 0xecc) = uVar14 + 1" (pointer_expression "*(uint *)(param_1 + 0xecc)" * (cast_expression "(uint *)(param_1 + 0xecc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xecc)" ( (binary_expression "param_1 + 0xecc" identifier + number_literal) )))) = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) (expression_statement "*(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);" (assignment_expression "*(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14)" (pointer_expression "*(uint *)(param_1 + 0xed0)" * (cast_expression "(uint *)(param_1 + 0xed0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xed0)" ( (binary_expression "param_1 + 0xed0" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14)" (pointer_expression "*(uint *)(param_1 + 0xed0)" * (cast_expression "(uint *)(param_1 + 0xed0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xed0)" ( (binary_expression "param_1 + 0xed0" identifier + number_literal) )))) + (call_expression "(uint)(0xfffffffe < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffe < uVar14)" ( (binary_expression "0xfffffffe < uVar14" number_literal < identifier) ))))) ;) })) })) }) (else_clause "else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }" else (compound_statement "{\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }" { (expression_statement "*(char *)(iVar13 + iVar10) = cVar7;" (assignment_expression "*(char *)(iVar13 + iVar10) = cVar7" (pointer_expression "*(char *)(iVar13 + iVar10)" * (cast_expression "(char *)(iVar13 + iVar10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + iVar10)" ( (binary_expression "iVar13 + iVar10" identifier + identifier) )))) = identifier) ;) }))) (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (if_statement "if (*(int *)(puVar16 + 0x10) == iVar11) break;" if (parenthesized_expression "(*(int *)(puVar16 + 0x10) == iVar11)" ( (binary_expression "*(int *)(puVar16 + 0x10) == iVar11" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) == identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar13 = *(int *)(param_1 + 0xcb4);" (assignment_expression "iVar13 = *(int *)(param_1 + 0xcb4)" identifier = (pointer_expression "*(int *)(param_1 + 0xcb4)" * (cast_expression "(int *)(param_1 + 0xcb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xcb4)" ( (binary_expression "param_1 + 0xcb4" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = iVar12;" (assignment_expression "iVar10 = iVar12" identifier = identifier) ;) })) (expression_statement "unaff_retaddr = *(int **)(puVar16 + 0x1c);" (assignment_expression "unaff_retaddr = *(int **)(puVar16 + 0x1c)" identifier = (pointer_expression "*(int **)(puVar16 + 0x1c)" * (cast_expression "(int **)(puVar16 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }" if (parenthesized_expression "(*(int *)(puVar16 + 0x10) != iVar12)" ( (binary_expression "*(int *)(puVar16 + 0x10) != iVar12" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }" { (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0xcb4);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0xcb4)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xcb4)" * (cast_expression "(undefined4 *)(param_1 + 0xcb4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xcb4)" ( (binary_expression "param_1 + 0xcb4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 0x13c) = iVar12;" (assignment_expression "*(int *)(param_1 + 0x13c) = iVar12" (pointer_expression "*(int *)(param_1 + 0x13c)" * (cast_expression "(int *)(param_1 + 0x13c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x13c)" ( (binary_expression "param_1 + 0x13c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + 0x10) = iVar12;" (assignment_expression "*(int *)(puVar16 + 0x10) = iVar12" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0x140) = uVar9;" (assignment_expression "*(undefined4 *)(param_1 + 0x140) = uVar9" (pointer_expression "*(undefined4 *)(param_1 + 0x140)" * (cast_expression "(undefined4 *)(param_1 + 0x140)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) = identifier) ;) })) })) (if_statement "if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }" if (parenthesized_expression "((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0)" ( (binary_expression "(*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0" (parenthesized_expression "(*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000)" ( (binary_expression "*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000" (pointer_expression "*(uint *)(unaff_retaddr[0x9f] + 0x40)" * (cast_expression "(uint *)(unaff_retaddr[0x9f] + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr[0x9f] + 0x40)" ( (binary_expression "unaff_retaddr[0x9f] + 0x40" (subscript_expression "unaff_retaddr[0x9f]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }" { (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" * (cast_expression "(undefined4 *)(puVar16 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ac67;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ac67" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00057f10();" (assignment_expression "iVar13 = FUN_00057f10()" identifier = (call_expression "FUN_00057f10()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) })) (expression_statement "iVar13 = *(int *)(param_1 + 0x13c);" (assignment_expression "iVar13 = *(int *)(param_1 + 0x13c)" identifier = (pointer_expression "*(int *)(param_1 + 0x13c)" * (cast_expression "(int *)(param_1 + 0x13c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x13c)" ( (binary_expression "param_1 + 0x13c" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00039b53;" goto statement_identifier ;) })) (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" identifier = (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ;) }) (else_clause "else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }" else (compound_statement "{\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }" { (labeled_statement "LAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);" statement_identifier : (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" identifier = (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ;)) (if_statement "if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;" if (parenthesized_expression "((uVar14 & 0x20) != 0)" ( (binary_expression "(uVar14 & 0x20) != 0" (parenthesized_expression "(uVar14 & 0x20)" ( (binary_expression "uVar14 & 0x20" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00039c0b;" goto statement_identifier ;)) }))) (expression_statement "*(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;" (assignment_expression "*(uint *)(param_1 + 300) = uVar14 & 0xfffffffd" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = (binary_expression "uVar14 & 0xfffffffd" identifier & number_literal)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a8b8" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000647d0();" (call_expression "FUN_000647d0()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }" if (parenthesized_expression "(*(char *)((int)unaff_retaddr + 0x25b) != '\0')" ( (binary_expression "*(char *)((int)unaff_retaddr + 0x25b) != '\0'" (pointer_expression "*(char *)((int)unaff_retaddr + 0x25b)" * (cast_expression "(char *)((int)unaff_retaddr + 0x25b)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_retaddr + 0x25b)" ( (binary_expression "(int)unaff_retaddr + 0x25b" (cast_expression "(int)unaff_retaddr" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }" { (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a8d1" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00039660();" (assignment_expression "iVar13 = FUN_00039660()" identifier = (call_expression "FUN_00039660()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) })) }) (else_clause "else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }" else (compound_statement "{\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }" { (expression_statement "*(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + 8) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + 8)" * (cast_expression "(undefined1 **)(puVar16 + 8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x58" identifier + number_literal)) ;) (labeled_statement "LAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);" statement_identifier : (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 8)" * (cast_expression "(undefined4 *)(puVar16 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) ))))) ;)) (expression_statement "*(int *)(puVar16 + -0x14) = iVar13;" (assignment_expression "*(int *)(puVar16 + -0x14) = iVar13" (pointer_expression "*(int *)(puVar16 + -0x14)" * (cast_expression "(int *)(puVar16 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140)" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x140)" * (cast_expression "(undefined4 *)(param_1 + 0x140)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];" (assignment_expression "*(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6]" (pointer_expression "*(int *)(puVar16 + -0x1c)" * (cast_expression "(int *)(puVar16 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = (subscript_expression "unaff_retaddr[0xa6]" identifier [ number_literal ])) ;) (expression_statement "*(int **)(puVar16 + -0x20) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x20) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x20)" * (cast_expression "(int **)(puVar16 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x20)" ( (binary_expression "puVar16 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = 0x39b6d;" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = 0x39b6d" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" * (cast_expression "(undefined4 *)(puVar16 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x24)" ( (binary_expression "puVar16 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00026df0();" (assignment_expression "iVar13 = FUN_00026df0()" identifier = (call_expression "FUN_00026df0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (expression_statement "uVar14 = *(uint *)(puVar16 + 0x58);" (assignment_expression "uVar14 = *(uint *)(puVar16 + 0x58)" identifier = (pointer_expression "*(uint *)(puVar16 + 0x58)" * (cast_expression "(uint *)(puVar16 + 0x58)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }" if (parenthesized_expression "(*(char *)(param_1 + 0x93c) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x93c) != '\0'" (pointer_expression "*(char *)(param_1 + 0x93c)" * (cast_expression "(char *)(param_1 + 0x93c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x93c)" ( (binary_expression "param_1 + 0x93c" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }" { (expression_statement "*(uint *)(puVar16 + -4) = uVar14;" (assignment_expression "*(uint *)(puVar16 + -4) = uVar14" (pointer_expression "*(uint *)(puVar16 + -4)" * (cast_expression "(uint *)(puVar16 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x140)" * (cast_expression "(undefined4 *)(param_1 + 0x140)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 4;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 4" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a8f7" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027090();" (call_expression "FUN_00027090()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar14 = *(uint *)(puVar16 + 0x58);" (assignment_expression "uVar14 = *(uint *)(puVar16 + 0x58)" identifier = (pointer_expression "*(uint *)(puVar16 + 0x58)" * (cast_expression "(uint *)(puVar16 + 0x58)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) })) (expression_statement "iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);" (assignment_expression "iVar13 = uVar14 + *(uint *)(param_1 + 0xb4)" identifier = (binary_expression "uVar14 + *(uint *)(param_1 + 0xb4)" identifier + (pointer_expression "*(uint *)(param_1 + 0xb4)" * (cast_expression "(uint *)(param_1 + 0xb4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb4)" ( (binary_expression "param_1 + 0xb4" identifier + number_literal) )))))) ;) (expression_statement "iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));" (assignment_expression "iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4))" identifier = (binary_expression "((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4))" (binary_expression "((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8)" (parenthesized_expression "((int)uVar14 >> 0x1f)" ( (binary_expression "(int)uVar14 >> 0x1f" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + (pointer_expression "*(int *)(param_1 + 0xb8)" * (cast_expression "(int *)(param_1 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb8)" ( (binary_expression "param_1 + 0xb8" identifier + number_literal) ))))) + (cast_expression "(uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar14,*(uint *)(param_1 + 0xb4))" identifier (argument_list "(uVar14,*(uint *)(param_1 + 0xb4))" ( identifier , (pointer_expression "*(uint *)(param_1 + 0xb4)" * (cast_expression "(uint *)(param_1 + 0xb4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb4)" ( (binary_expression "param_1 + 0xb4" identifier + number_literal) )))) )))))) ;) (expression_statement "cVar7 = *(char *)(param_1 + 0x145);" (assignment_expression "cVar7 = *(char *)(param_1 + 0x145)" identifier = (pointer_expression "*(char *)(param_1 + 0x145)" * (cast_expression "(char *)(param_1 + 0x145)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x145)" ( (binary_expression "param_1 + 0x145" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + 8) = iVar13;" (assignment_expression "*(int *)(puVar16 + 8) = iVar13" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + 0xc) = iVar10;" (assignment_expression "*(int *)(puVar16 + 0xc) = iVar10" (pointer_expression "*(int *)(puVar16 + 0xc)" * (cast_expression "(int *)(puVar16 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0xb4) = iVar13;" (assignment_expression "*(int *)(param_1 + 0xb4) = iVar13" (pointer_expression "*(int *)(param_1 + 0xb4)" * (cast_expression "(int *)(param_1 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb4)" ( (binary_expression "param_1 + 0xb4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0xb8) = iVar10;" (assignment_expression "*(int *)(param_1 + 0xb8) = iVar10" (pointer_expression "*(int *)(param_1 + 0xb8)" * (cast_expression "(int *)(param_1 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb8)" ( (binary_expression "param_1 + 0xb8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }" if (parenthesized_expression "(((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc)))" ( (binary_expression "((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))" (parenthesized_expression "((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0'))" ( (binary_expression "(cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')" (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(char *)(param_1 + 0x147) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x147) != '\0'" (pointer_expression "*(char *)(param_1 + 0x147)" * (cast_expression "(char *)(param_1 + 0x147)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x147)" ( (binary_expression "param_1 + 0x147" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))" ( (binary_expression "*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc)" (binary_expression "*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0)" (pointer_expression "*(int *)(puVar16 + 0xc)" * (cast_expression "(int *)(puVar16 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) == (pointer_expression "*(int *)(param_1 + 0xed0)" * (cast_expression "(int *)(param_1 + 0xed0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xed0)" ( (binary_expression "param_1 + 0xed0" identifier + number_literal) ))))) && (binary_expression "*(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc)" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) == (pointer_expression "*(int *)(param_1 + 0xecc)" * (cast_expression "(int *)(param_1 + 0xecc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xecc)" ( (binary_expression "param_1 + 0xecc" identifier + number_literal) )))))) ))) )) (compound_statement "{\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }" { (expression_statement "*(undefined1 *)(param_1 + 0x130) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x130) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x130)" * (cast_expression "(undefined1 *)(param_1 + 0x130)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "unaff_EBX + 0x47586" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a937;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a937" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar14 = *(uint *)(puVar16 + 0x58);" (assignment_expression "uVar14 = *(uint *)(puVar16 + 0x58)" identifier = (pointer_expression "*(uint *)(puVar16 + 0x58)" * (cast_expression "(uint *)(puVar16 + 0x58)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) })) (if_statement "if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }" if (parenthesized_expression "(*(uint *)(param_1 + 0x13c) == uVar14)" ( (binary_expression "*(uint *)(param_1 + 0x13c) == uVar14" (pointer_expression "*(uint *)(param_1 + 0x13c)" * (cast_expression "(uint *)(param_1 + 0x13c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x13c)" ( (binary_expression "param_1 + 0x13c" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }" { (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3aae9;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3aae9" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00039100();" (assignment_expression "iVar13 = FUN_00039100()" identifier = (call_expression "FUN_00039100()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)(param_1 + 0x13c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x13c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x13c)" * (cast_expression "(undefined4 *)(param_1 + 0x13c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x13c)" ( (binary_expression "param_1 + 0x13c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);" (assignment_expression "*(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c)" (pointer_expression "*(undefined4 *)(param_1 + 0x140)" * (cast_expression "(undefined4 *)(param_1 + 0x140)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xc6c)" * (cast_expression "(undefined4 *)(param_1 + 0xc6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc6c)" ( (binary_expression "param_1 + 0xc6c" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }" if (parenthesized_expression "(*(char *)(param_1 + 0x130) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x130) != '\0'" (pointer_expression "*(char *)(param_1 + 0x130)" * (cast_expression "(char *)(param_1 + 0x130)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }" { (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffd" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ab29;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ab29" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000647d0();" (call_expression "FUN_000647d0()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }" if (parenthesized_expression "(*(char *)((int)unaff_retaddr + 0x25b) != '\0')" ( (binary_expression "*(char *)((int)unaff_retaddr + 0x25b) != '\0'" (pointer_expression "*(char *)((int)unaff_retaddr + 0x25b)" * (cast_expression "(char *)((int)unaff_retaddr + 0x25b)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_retaddr + 0x25b)" ( (binary_expression "(int)unaff_retaddr + 0x25b" (cast_expression "(int)unaff_retaddr" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }" { (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ab42;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ab42" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00039660();" (assignment_expression "iVar13 = FUN_00039660()" identifier = (call_expression "FUN_00039660()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) })) })) }) (else_clause "else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }" else (compound_statement "{\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }" { (expression_statement "*(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;" (assignment_expression "*(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14" (pointer_expression "*(int *)(param_1 + 0x140)" * (cast_expression "(int *)(param_1 + 0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x140) + uVar14" (pointer_expression "*(int *)(param_1 + 0x140)" * (cast_expression "(int *)(param_1 + 0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) + identifier)) ;) (expression_statement "*(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;" (assignment_expression "*(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14" (pointer_expression "*(uint *)(param_1 + 0x13c)" * (cast_expression "(uint *)(param_1 + 0x13c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x13c)" ( (binary_expression "param_1 + 0x13c" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 0x13c) - uVar14" (pointer_expression "*(uint *)(param_1 + 0x13c)" * (cast_expression "(uint *)(param_1 + 0x13c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x13c)" ( (binary_expression "param_1 + 0x13c" identifier + number_literal) )))) - identifier)) ;) }))) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xb8)" * (cast_expression "(undefined4 *)(param_1 + 0xb8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb8)" ( (binary_expression "param_1 + 0xb8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xb4)" * (cast_expression "(undefined4 *)(param_1 + 0xb4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb4)" ( (binary_expression "param_1 + 0xb4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39c08;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39c08" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001cb10();" (call_expression "FUN_0001cb10()" identifier (argument_list "()" ( ))) ;) }))) (labeled_statement "LAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;" statement_identifier : (expression_statement "*(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;" (assignment_expression "*(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48" (pointer_expression "*(undefined1 **)(puVar16 + -0x10)" * (cast_expression "(undefined1 **)(puVar16 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x48" identifier + number_literal)) ;)) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39c18;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39c18" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001ab40();" (call_expression "FUN_0001ab40()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar9 = *(undefined4 *)(puVar16 + 0x48);" (assignment_expression "uVar9 = *(undefined4 *)(puVar16 + 0x48)" identifier = (pointer_expression "*(undefined4 *)(puVar16 + 0x48)" * (cast_expression "(undefined4 *)(puVar16 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x48)" ( (binary_expression "puVar16 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = *(int *)(puVar16 + 0x20);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x20)" identifier = (pointer_expression "*(int *)(puVar16 + 0x20)" * (cast_expression "(int *)(puVar16 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "puVar15 = puVar16 + -4;" (assignment_expression "puVar15 = puVar16 + -4" identifier = (binary_expression "puVar16 + -4" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);" (assignment_expression "*(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44)" (pointer_expression "*(undefined4 *)(iVar13 + 0x38)" * (cast_expression "(undefined4 *)(iVar13 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x38)" ( (binary_expression "iVar13 + 0x38" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x44)" * (cast_expression "(undefined4 *)(puVar16 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x44)" ( (binary_expression "puVar16 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x3c) = uVar9;" (assignment_expression "*(undefined4 *)(iVar13 + 0x3c) = uVar9" (pointer_expression "*(undefined4 *)(iVar13 + 0x3c)" * (cast_expression "(undefined4 *)(iVar13 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x3c)" ( (binary_expression "iVar13 + 0x3c" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_00039ecb;" goto statement_identifier ;) })) (expression_statement "FUN_0001ab40(local_3c + 1);" (call_expression "FUN_0001ab40(local_3c + 1)" identifier (argument_list "(local_3c + 1)" ( (binary_expression "local_3c + 1" identifier + number_literal) ))) ;) (expression_statement "*(undefined1 **)(param_1 + 0xcc) = local_3c[0];" (assignment_expression "*(undefined1 **)(param_1 + 0xcc) = local_3c[0]" (pointer_expression "*(undefined1 **)(param_1 + 0xcc)" * (cast_expression "(undefined1 **)(param_1 + 0xcc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xcc)" ( (binary_expression "param_1 + 0xcc" identifier + number_literal) )))) = (subscript_expression "local_3c[0]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 **)(param_1 + 0xd0) = local_3c[1];" (assignment_expression "*(undefined1 **)(param_1 + 0xd0) = local_3c[1]" (pointer_expression "*(undefined1 **)(param_1 + 0xd0)" * (cast_expression "(undefined1 **)(param_1 + 0xd0)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xd0)" ( (binary_expression "param_1 + 0xd0" identifier + number_literal) )))) = (subscript_expression "local_3c[1]" identifier [ number_literal ])) ;) (expression_statement "puVar4 = &uStack_84;" (assignment_expression "puVar4 = &uStack_84" identifier = (pointer_expression "&uStack_84" & identifier)) ;) (labeled_statement "LAB_00039c5c:\n    puVar15 = (undefined1 *)puVar4;" statement_identifier : (expression_statement "puVar15 = (undefined1 *)puVar4;" (assignment_expression "puVar15 = (undefined1 *)puVar4" identifier = (cast_expression "(undefined1 *)puVar4" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) (if_statement "if (*(int *)(param_1 + 0x110) == 1) {\n      iVar13 = *(int *)(puVar15 + 0x24);\n      *(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);\n      *(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);\n      *(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);\n      *(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);\n      *(undefined4 *)(puVar15 + -0x14) = 0x3a775;\n      iVar13 = FUN_0001abe0();\n      if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x110) == 1)" ( (binary_expression "*(int *)(param_1 + 0x110) == 1" (pointer_expression "*(int *)(param_1 + 0x110)" * (cast_expression "(int *)(param_1 + 0x110)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      iVar13 = *(int *)(puVar15 + 0x24);\n      *(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);\n      *(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);\n      *(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);\n      *(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);\n      *(undefined4 *)(puVar15 + -0x14) = 0x3a775;\n      iVar13 = FUN_0001abe0();\n      if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }\n    }" { (expression_statement "iVar13 = *(int *)(puVar15 + 0x24);" (assignment_expression "iVar13 = *(int *)(puVar15 + 0x24)" identifier = (pointer_expression "*(int *)(puVar15 + 0x24)" * (cast_expression "(int *)(puVar15 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + 0x24)" ( (binary_expression "puVar15 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);" (assignment_expression "*(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78)" (pointer_expression "*(undefined4 *)(puVar15 + -4)" * (cast_expression "(undefined4 *)(puVar15 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -4)" ( (binary_expression "puVar15 + -4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar13 + 0x78)" * (cast_expression "(undefined4 *)(iVar13 + 0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x78)" ( (binary_expression "iVar13 + 0x78" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);" (assignment_expression "*(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74)" (pointer_expression "*(undefined4 *)(puVar15 + -8)" * (cast_expression "(undefined4 *)(puVar15 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -8)" ( (binary_expression "puVar15 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar13 + 0x74)" * (cast_expression "(undefined4 *)(iVar13 + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x74)" ( (binary_expression "iVar13 + 0x74" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);" (assignment_expression "*(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c)" (pointer_expression "*(undefined4 *)(puVar15 + -0xc)" * (cast_expression "(undefined4 *)(puVar15 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0xc)" ( (binary_expression "puVar15 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar13 + 0x3c)" * (cast_expression "(undefined4 *)(iVar13 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x3c)" ( (binary_expression "iVar13 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);" (assignment_expression "*(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38)" (pointer_expression "*(undefined4 *)(puVar15 + -0x10)" * (cast_expression "(undefined4 *)(puVar15 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar13 + 0x38)" * (cast_expression "(undefined4 *)(iVar13 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x38)" ( (binary_expression "iVar13 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x3a775;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x3a775" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" * (cast_expression "(undefined4 *)(puVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_0001abe0();" (assignment_expression "iVar13 = FUN_0001abe0()" identifier = (call_expression "FUN_0001abe0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0xad8) <= iVar13)" ( (binary_expression "*(int *)(param_1 + 0xad8) <= iVar13" (pointer_expression "*(int *)(param_1 + 0xad8)" * (cast_expression "(int *)(param_1 + 0xad8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xad8)" ( (binary_expression "param_1 + 0xad8" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }" { (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 300) | 2" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(undefined4 *)(param_1 + 0x110) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x110) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar15 + -0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar15 + -0xc) = 0" (pointer_expression "*(undefined4 *)(puVar15 + -0xc)" * (cast_expression "(undefined4 *)(puVar15 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0xc)" ( (binary_expression "puVar15 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar15 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar15 + -0x10) = param_1" (pointer_expression "*(int *)(puVar15 + -0x10)" * (cast_expression "(int *)(puVar15 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x3a7a0" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" * (cast_expression "(undefined4 *)(puVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00043c20();" (call_expression "FUN_00043c20()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;" (assignment_expression "*(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae" (pointer_expression "*(int *)(puVar15 + -0xc)" * (cast_expression "(int *)(puVar15 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0xc)" ( (binary_expression "puVar15 + -0xc" identifier + number_literal) )))) = (binary_expression "unaff_EBX + 0x475ae" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar15 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar15 + -0x10) = param_1" (pointer_expression "*(int *)(puVar15 + -0x10)" * (cast_expression "(int *)(puVar15 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x3a7af;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x3a7af" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" * (cast_expression "(undefined4 *)(puVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) })) })) (labeled_statement "LAB_00039c69:\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;" statement_identifier : (expression_statement "*(int **)(puVar15 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar15 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar15 + -0x10)" * (cast_expression "(int **)(puVar15 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = identifier) ;)) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x39c72;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x39c72" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" * (cast_expression "(undefined4 *)(puVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_0001cc10();" (assignment_expression "iVar13 = FUN_0001cc10()" identifier = (call_expression "FUN_0001cc10()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar16 = puVar15;" (assignment_expression "puVar16 = puVar15" identifier = identifier) ;) }) (else_clause "else {\n    local_2a = 0;\n    local_70[0] = 0;\n    *local_48 = 0;\n    local_70[3] = 100;\n    *local_3c[0] = 0;\n    local_44 = 0;\n    puVar16 = auStack_80;\n    do {\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    } while (*(int *)(puVar16 + 0x1c) != -1);\n    uVar14 = *(uint *)(param_1 + 300);\nLAB_00039e5f:\n    puVar17 = *(undefined1 **)(puVar16 + 0x44);\n    unaff_retaddr[0x158] = 1;\n    *puVar17 = 1;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }\n    puVar17 = puVar16 + 0x48;\nLAB_00039ea1:\n    *(undefined1 **)(puVar16 + -0x10) = puVar17;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39eaa;\n    FUN_0001ab40();\n    uVar9 = *(undefined4 *)(puVar16 + 0x48);\n    iVar13 = *(int *)(puVar16 + 0x20);\n    puVar15 = puVar16 + -4;\n    *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n    *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n    puVar4 = (undefined4 *)(puVar16 + -4);\n    if (*(int *)(puVar16 + 0x1c) == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    puVar4 = *(undefined4 **)(param_1 + 0x9c);\n    if (puVar4 != (undefined4 *)0x0) {\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }\n    puVar4 = *(undefined4 **)(param_1 + 0xa8);\n    if (puVar4 == (undefined4 *)0x0) goto LAB_00039c69;\n    uVar9 = *(undefined4 *)(param_1 + 0xb8);\n    *puVar4 = *(undefined4 *)(param_1 + 0xb4);\n    puVar4[1] = uVar9;\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39f0e;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }" else (compound_statement "{\n    local_2a = 0;\n    local_70[0] = 0;\n    *local_48 = 0;\n    local_70[3] = 100;\n    *local_3c[0] = 0;\n    local_44 = 0;\n    puVar16 = auStack_80;\n    do {\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    } while (*(int *)(puVar16 + 0x1c) != -1);\n    uVar14 = *(uint *)(param_1 + 300);\nLAB_00039e5f:\n    puVar17 = *(undefined1 **)(puVar16 + 0x44);\n    unaff_retaddr[0x158] = 1;\n    *puVar17 = 1;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }\n    puVar17 = puVar16 + 0x48;\nLAB_00039ea1:\n    *(undefined1 **)(puVar16 + -0x10) = puVar17;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39eaa;\n    FUN_0001ab40();\n    uVar9 = *(undefined4 *)(puVar16 + 0x48);\n    iVar13 = *(int *)(puVar16 + 0x20);\n    puVar15 = puVar16 + -4;\n    *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n    *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n    puVar4 = (undefined4 *)(puVar16 + -4);\n    if (*(int *)(puVar16 + 0x1c) == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    puVar4 = *(undefined4 **)(param_1 + 0x9c);\n    if (puVar4 != (undefined4 *)0x0) {\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }\n    puVar4 = *(undefined4 **)(param_1 + 0xa8);\n    if (puVar4 == (undefined4 *)0x0) goto LAB_00039c69;\n    uVar9 = *(undefined4 *)(param_1 + 0xb8);\n    *puVar4 = *(undefined4 *)(param_1 + 0xb4);\n    puVar4[1] = uVar9;\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39f0e;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }" { (expression_statement "local_2a = 0;" (assignment_expression "local_2a = 0" identifier = number_literal) ;) (expression_statement "local_70[0] = 0;" (assignment_expression "local_70[0] = 0" (subscript_expression "local_70[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*local_48 = 0;" (assignment_expression "*local_48 = 0" (pointer_expression "*local_48" * identifier) = number_literal) ;) (expression_statement "local_70[3] = 100;" (assignment_expression "local_70[3] = 100" (subscript_expression "local_70[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*local_3c[0] = 0;" (assignment_expression "*local_3c[0] = 0" (pointer_expression "*local_3c[0]" * (subscript_expression "local_3c[0]" identifier [ number_literal ])) = number_literal) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "puVar16 = auStack_80;" (assignment_expression "puVar16 = auStack_80" identifier = identifier) ;) (do_statement "do {\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    } while (*(int *)(puVar16 + 0x1c) != -1);" do (compound_statement "{\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    }" { (expression_statement "uVar14 = *(uint *)(param_1 + 0x8f8);" (assignment_expression "uVar14 = *(uint *)(param_1 + 0x8f8)" identifier = (pointer_expression "*(uint *)(param_1 + 0x8f8)" * (cast_expression "(uint *)(param_1 + 0x8f8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x8f8)" ( (binary_expression "param_1 + 0x8f8" identifier + number_literal) ))))) ;) (if_statement "if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }" if (parenthesized_expression "(((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14))" ( (binary_expression "((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)" (parenthesized_expression "((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0)" ( (binary_expression "(*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0" (parenthesized_expression "(*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3)" ( (binary_expression "*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3" (pointer_expression "*(byte *)(unaff_retaddr[0x9f] + 0x40)" * (cast_expression "(byte *)(unaff_retaddr[0x9f] + 0x40)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr[0x9f] + 0x40)" ( (binary_expression "unaff_retaddr[0x9f] + 0x40" (subscript_expression "unaff_retaddr[0x9f]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "(unaff_retaddr[0x5e] != 0x14)" ( (binary_expression "unaff_retaddr[0x5e] != 0x14" (subscript_expression "unaff_retaddr[0x5e]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }" { (expression_statement "uVar2 = *(uint *)(param_1 + 0x94);" (assignment_expression "uVar2 = *(uint *)(param_1 + 0x94)" identifier = (pointer_expression "*(uint *)(param_1 + 0x94)" * (cast_expression "(uint *)(param_1 + 0x94)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) ))))) ;) (if_statement "if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }" if (parenthesized_expression "(((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14)))))" ( (binary_expression "((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))" (parenthesized_expression "((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff)" ( (binary_expression "(*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff" (parenthesized_expression "(*(uint *)(param_1 + 0x98) & uVar2)" ( (binary_expression "*(uint *)(param_1 + 0x98) & uVar2" (pointer_expression "*(uint *)(param_1 + 0x98)" * (cast_expression "(uint *)(param_1 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) )))) & identifier) )) != number_literal) )) && (parenthesized_expression "((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))" ( (parenthesized_expression "(*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14)))" ( (binary_expression "*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))" (binary_expression "*(char *)(param_1 + 0xd4) == '\0'" (pointer_expression "*(char *)(param_1 + 0xd4)" * (cast_expression "(char *)(param_1 + 0xd4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd4)" ( (binary_expression "param_1 + 0xd4" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))" ( (comma_expression "uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14)" (assignment_expression "uVar8 = uVar2 - *(uint *)(param_1 + 0xac)" identifier = (binary_expression "uVar2 - *(uint *)(param_1 + 0xac)" identifier - (pointer_expression "*(uint *)(param_1 + 0xac)" * (cast_expression "(uint *)(param_1 + 0xac)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) )))))) , (binary_expression "(int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14)" (cast_expression "(int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac)))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac)))" ( (binary_expression "(*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))" (parenthesized_expression "(*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0))" ( (binary_expression "*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)" (pointer_expression "*(uint *)(param_1 + 0x98)" * (cast_expression "(uint *)(param_1 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_1 + 0xb0)" * (cast_expression "(int *)(param_1 + 0xb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) )) - (call_expression "(uint)(uVar2 < *(uint *)(param_1 + 0xac))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 < *(uint *)(param_1 + 0xac))" ( (binary_expression "uVar2 < *(uint *)(param_1 + 0xac)" identifier < (pointer_expression "*(uint *)(param_1 + 0xac)" * (cast_expression "(uint *)(param_1 + 0xac)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) ))))) )))) ))) < (cast_expression "(int)(uint)(uVar8 < uVar14)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(uVar8 < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < uVar14)" ( (binary_expression "uVar8 < uVar14" identifier < identifier) )))))) ))) )) ))) )) (compound_statement "{\n          uVar14 = uVar8;\n        }" { (expression_statement "uVar14 = uVar8;" (assignment_expression "uVar14 = uVar8" identifier = identifier) ;) })) })) (if_statement "if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }" if (parenthesized_expression "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) )) (compound_statement "{\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }" { (expression_statement "*(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + -0x10)" * (cast_expression "(undefined1 **)(puVar16 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x58" identifier + number_literal)) ;) (expression_statement "*(uint *)(puVar16 + -0x14) = uVar14;" (assignment_expression "*(uint *)(puVar16 + -0x14) = uVar14" (pointer_expression "*(uint *)(puVar16 + -0x14)" * (cast_expression "(uint *)(puVar16 + -0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124)" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x124)" * (cast_expression "(undefined4 *)(param_1 + 0x124)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x124)" ( (binary_expression "param_1 + 0x124" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];" (assignment_expression "*(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5]" (pointer_expression "*(int *)(puVar16 + -0x1c)" * (cast_expression "(int *)(puVar16 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = (subscript_expression "unaff_retaddr[0xa5]" identifier [ number_literal ])) ;) (expression_statement "*(int **)(puVar16 + -0x20) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x20) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x20)" * (cast_expression "(int **)(puVar16 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x20)" ( (binary_expression "puVar16 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = 0x39f63;" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = 0x39f63" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" * (cast_expression "(undefined4 *)(puVar16 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x24)" ( (binary_expression "puVar16 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00026f00();" (assignment_expression "iVar13 = FUN_00026f00()" identifier = (call_expression "FUN_00026f00()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }" if (parenthesized_expression "(iVar13 != 0x51)" ( (binary_expression "iVar13 != 0x51" identifier != number_literal) )) (compound_statement "{\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }" { (if_statement "if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }" { (if_statement "if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;" if (parenthesized_expression "((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0))" ( (binary_expression "(*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)" (parenthesized_expression "(*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0)" ( (binary_expression "*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0" (binary_expression "*(int *)(param_1 + 0xb0) == 0" (pointer_expression "*(int *)(param_1 + 0xb0)" * (cast_expression "(int *)(param_1 + 0xb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) )))) == number_literal) && (binary_expression "*(int *)(param_1 + 0xac) == 0" (pointer_expression "*(int *)(param_1 + 0xac)" * (cast_expression "(int *)(param_1 + 0xac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) )))) == number_literal)) )) && (parenthesized_expression "(*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)" ( (binary_expression "*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0" (binary_expression "*(int *)(param_1 + 0xb8) == 0" (pointer_expression "*(int *)(param_1 + 0xb8)" * (cast_expression "(int *)(param_1 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb8)" ( (binary_expression "param_1 + 0xb8" identifier + number_literal) )))) == number_literal) && (binary_expression "*(int *)(param_1 + 0xb4) == 0" (pointer_expression "*(int *)(param_1 + 0xb4)" * (cast_expression "(int *)(param_1 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb4)" ( (binary_expression "param_1 + 0xb4" identifier + number_literal) )))) == number_literal)) ))) )) (goto_statement "goto LAB_00039f9b;" goto statement_identifier ;)) (goto_statement "goto LAB_000399eb;" goto statement_identifier ;) })) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" identifier = (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);" (assignment_expression "*(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10)" (pointer_expression "*(undefined4 *)(puVar16 + 0x20)" * (cast_expression "(undefined4 *)(puVar16 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" * (cast_expression "(undefined4 *)(puVar16 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;" statement_identifier : (if_statement "if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;" if (parenthesized_expression "(*(int *)(puVar16 + 0x1c) != 0)" ( (binary_expression "*(int *)(puVar16 + 0x1c) != 0" (pointer_expression "*(int *)(puVar16 + 0x1c)" * (cast_expression "(int *)(puVar16 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto joined_r0x0003a020;" goto statement_identifier ;))) (goto_statement "goto LAB_00039e5f;" goto statement_identifier ;) })) (expression_statement "iVar13 = *(int *)(param_1 + 0xb0);" (assignment_expression "iVar13 = *(int *)(param_1 + 0xb0)" identifier = (pointer_expression "*(int *)(param_1 + 0xb0)" * (cast_expression "(int *)(param_1 + 0xb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = *(int *)(param_1 + 0xac);" (assignment_expression "iVar10 = *(int *)(param_1 + 0xac)" identifier = (pointer_expression "*(int *)(param_1 + 0xac)" * (cast_expression "(int *)(param_1 + 0xac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x58) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + 0x58) = 0" (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" * (cast_expression "(undefined4 *)(puVar16 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }" if (parenthesized_expression "(iVar13 == 0 && iVar10 == 0)" ( (binary_expression "iVar13 == 0 && iVar10 == 0" (binary_expression "iVar13 == 0" identifier == number_literal) && (binary_expression "iVar10 == 0" identifier == number_literal)) )) (compound_statement "{\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }" { (if_statement "if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)" ( (binary_expression "*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0" (binary_expression "*(int *)(param_1 + 0xb8) == 0" (pointer_expression "*(int *)(param_1 + 0xb8)" * (cast_expression "(int *)(param_1 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb8)" ( (binary_expression "param_1 + 0xb8" identifier + number_literal) )))) == number_literal) && (binary_expression "*(int *)(param_1 + 0xb4) == 0" (pointer_expression "*(int *)(param_1 + 0xb4)" * (cast_expression "(int *)(param_1 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb4)" ( (binary_expression "param_1 + 0xb4" identifier + number_literal) )))) == number_literal)) )) (compound_statement "{\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }" { (labeled_statement "LAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;" statement_identifier : (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 7;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 7" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39fa6;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39fa6" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001c710();" (call_expression "FUN_0001c710()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }" if (parenthesized_expression "(*(int *)(param_1 + 0x110) != 0)" ( (binary_expression "*(int *)(param_1 + 0x110) != 0" (pointer_expression "*(int *)(param_1 + 0x110)" * (cast_expression "(int *)(param_1 + 0x110)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }" { (expression_statement "*(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;" (assignment_expression "*(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48" (pointer_expression "*(undefined1 **)(puVar16 + -0x10)" * (cast_expression "(undefined1 **)(puVar16 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x48" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39fc4;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39fc4" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001ab40();" (call_expression "FUN_0001ab40()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (undefined4 *)(puVar16 + 0x44);" (assignment_expression "puVar4 = (undefined4 *)(puVar16 + 0x44)" identifier = (cast_expression "(undefined4 *)(puVar16 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x44)" ( (binary_expression "puVar16 + 0x44" identifier + number_literal) )))) ;) (expression_statement "uVar9 = *(undefined4 *)(puVar16 + 0x48);" (assignment_expression "uVar9 = *(undefined4 *)(puVar16 + 0x48)" identifier = (pointer_expression "*(undefined4 *)(puVar16 + 0x48)" * (cast_expression "(undefined4 *)(puVar16 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x48)" ( (binary_expression "puVar16 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = *(int *)(puVar16 + 0x20);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x20)" identifier = (pointer_expression "*(int *)(puVar16 + 0x20)" * (cast_expression "(int *)(puVar16 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "puVar16 = puVar16 + -4;" (assignment_expression "puVar16 = puVar16 + -4" identifier = (binary_expression "puVar16 + -4" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x74) = *puVar4;" (assignment_expression "*(undefined4 *)(iVar13 + 0x74) = *puVar4" (pointer_expression "*(undefined4 *)(iVar13 + 0x74)" * (cast_expression "(undefined4 *)(iVar13 + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x74)" ( (binary_expression "iVar13 + 0x74" identifier + number_literal) )))) = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x78) = uVar9;" (assignment_expression "*(undefined4 *)(iVar13 + 0x78) = uVar9" (pointer_expression "*(undefined4 *)(iVar13 + 0x78)" * (cast_expression "(undefined4 *)(iVar13 + 0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x78)" ( (binary_expression "iVar13 + 0x78" identifier + number_literal) )))) = identifier) ;) })) })) (labeled_statement "LAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);" statement_identifier : (expression_statement "iVar13 = *(int *)(puVar16 + 0x58);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x58)" identifier = (pointer_expression "*(int *)(puVar16 + 0x58)" * (cast_expression "(int *)(puVar16 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;)) (if_statement "if (iVar13 == 0) goto LAB_00039f28;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00039f28;" goto statement_identifier ;)) (if_statement "if (iVar13 < 1) goto LAB_0003a030;" if (parenthesized_expression "(iVar13 < 1)" ( (binary_expression "iVar13 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0003a030;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)(puVar16 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + 0x10) = 0" (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" * (cast_expression "(undefined4 *)(puVar16 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }" else (compound_statement "{\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }" { (labeled_statement "LAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }" statement_identifier : (if_statement "if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0x120) != 0)" ( (binary_expression "*(int *)(param_1 + 0x120) != 0" (pointer_expression "*(int *)(param_1 + 0x120)" * (cast_expression "(int *)(param_1 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }" { (labeled_statement "LAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;" statement_identifier : (expression_statement "uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;" (assignment_expression "uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe" identifier = (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal)) ;)) (expression_statement "*(uint *)(param_1 + 300) = uVar14;" (assignment_expression "*(uint *)(param_1 + 300) = uVar14" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0003a00e;" goto statement_identifier ;) }))) (expression_statement "*(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);" (assignment_expression "*(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20)" (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" * (cast_expression "(undefined4 *)(puVar16 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x20)" * (cast_expression "(undefined4 *)(puVar16 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) }))) (expression_statement "*(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;" (assignment_expression "*(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0" (pointer_expression "*(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13)" * (cast_expression "(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x124) + iVar13)" ( (binary_expression "*(int *)(param_1 + 0x124) + iVar13" (pointer_expression "*(int *)(param_1 + 0x124)" * (cast_expression "(int *)(param_1 + 0x124)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x124)" ( (binary_expression "param_1 + 0x124" identifier + number_literal) )))) + identifier) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);" (assignment_expression "*(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124)" (pointer_expression "*(undefined4 *)(param_1 + 0xe8)" * (cast_expression "(undefined4 *)(param_1 + 0xe8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x124)" * (cast_expression "(undefined4 *)(param_1 + 0x124)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x124)" ( (binary_expression "param_1 + 0x124" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);" (assignment_expression "pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34)" identifier = (pointer_expression "*(code **)(unaff_retaddr[0x9f] + 0x34)" * (cast_expression "(code **)(unaff_retaddr[0x9f] + 0x34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_retaddr[0x9f] + 0x34)" ( (binary_expression "unaff_retaddr[0x9f] + 0x34" (subscript_expression "unaff_retaddr[0x9f]" identifier [ number_literal ]) + number_literal) ))))) ;) (if_statement "if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }" if (parenthesized_expression "(pcVar3 != (code *)0x0)" ( (binary_expression "pcVar3 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }" { (expression_statement "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;" (assignment_expression "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x56" (pointer_expression "*(undefined1 **)(puVar16 + -4)" * (cast_expression "(undefined1 **)(puVar16 + -4)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x56" identifier + number_literal)) ;) (expression_statement "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + -8)" * (cast_expression "(undefined1 **)(puVar16 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x58" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar16 + -0xc) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0xc) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0xc)" * (cast_expression "(int **)(puVar16 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39a36;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39a36" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = (*pcVar3)();" (assignment_expression "iVar13 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }" { (if_statement "if (puVar16[0x56] == '\0') goto LAB_00039a4c;" if (parenthesized_expression "(puVar16[0x56] == '\0')" ( (binary_expression "puVar16[0x56] == '\0'" (subscript_expression "puVar16[0x56]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00039a4c;" goto statement_identifier ;)) (labeled_statement "LAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);" statement_identifier : (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" identifier = (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ;)) (goto_statement "goto LAB_0003a00e;" goto statement_identifier ;) })) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (labeled_statement "LAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }" statement_identifier : (if_statement "if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }" if (parenthesized_expression "(*(char *)(param_1 + 0xd4) != '\0')" ( (binary_expression "*(char *)(param_1 + 0xd4) != '\0'" (pointer_expression "*(char *)(param_1 + 0xd4)" * (cast_expression "(char *)(param_1 + 0xd4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd4)" ( (binary_expression "param_1 + 0xd4" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }" { (expression_statement "puVar16[0x57] = 0;" (assignment_expression "puVar16[0x57] = 0" (subscript_expression "puVar16[0x57]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;" (assignment_expression "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x57" (pointer_expression "*(undefined1 **)(puVar16 + -4)" * (cast_expression "(undefined1 **)(puVar16 + -4)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x57" identifier + number_literal)) ;) (expression_statement "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + -8)" * (cast_expression "(undefined1 **)(puVar16 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x58" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar16 + -0xc) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0xc) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0xc)" * (cast_expression "(int **)(puVar16 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39da6;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39da6" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00025650();" (assignment_expression "iVar13 = FUN_00025650()" identifier = (call_expression "FUN_00025650()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (expression_statement "pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);" (assignment_expression "pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34)" identifier = (pointer_expression "*(code **)(unaff_retaddr[0x9f] + 0x34)" * (cast_expression "(code **)(unaff_retaddr[0x9f] + 0x34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_retaddr[0x9f] + 0x34)" ( (binary_expression "unaff_retaddr[0x9f] + 0x34" (subscript_expression "unaff_retaddr[0x9f]" identifier [ number_literal ]) + number_literal) ))))) ;) (if_statement "if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }" if (parenthesized_expression "(((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58)))" ( (binary_expression "((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))" (parenthesized_expression "((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4)))" ( (binary_expression "(pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))" (parenthesized_expression "(pcVar3 != (code *)0x0)" ( (binary_expression "pcVar3 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))" ( (binary_expression "(int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4)" (cast_expression "(int)(uint)(*(int *)(param_1 + 0xa0) != 0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(*(int *)(param_1 + 0xa0) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(param_1 + 0xa0) != 0)" ( (binary_expression "*(int *)(param_1 + 0xa0) != 0" (pointer_expression "*(int *)(param_1 + 0xa0)" * (cast_expression "(int *)(param_1 + 0xa0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) )))) != number_literal) )))) <= (unary_expression "-*(int *)(param_1 + 0xa4)" - (pointer_expression "*(int *)(param_1 + 0xa4)" * (cast_expression "(int *)(param_1 + 0xa4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa4)" ( (binary_expression "param_1 + 0xa4" identifier + number_literal) )))))) ))) )) && (parenthesized_expression "(0 < *(int *)(puVar16 + 0x58))" ( (binary_expression "0 < *(int *)(puVar16 + 0x58)" number_literal < (pointer_expression "*(int *)(puVar16 + 0x58)" * (cast_expression "(int *)(puVar16 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ))) )) (compound_statement "{\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }" { (expression_statement "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;" (assignment_expression "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x56" (pointer_expression "*(undefined1 **)(puVar16 + -4)" * (cast_expression "(undefined1 **)(puVar16 + -4)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x56" identifier + number_literal)) ;) (expression_statement "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + -8)" * (cast_expression "(undefined1 **)(puVar16 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x58" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar16 + -0xc) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0xc) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0xc)" * (cast_expression "(int **)(puVar16 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a21e;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a21e" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = (*pcVar3)();" (assignment_expression "iVar13 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (if_statement "if (puVar16[0x56] != '\0') goto LAB_0003a008;" if (parenthesized_expression "(puVar16[0x56] != '\0')" ( (binary_expression "puVar16[0x56] != '\0'" (subscript_expression "puVar16[0x56]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0003a008;" goto statement_identifier ;)) })) (if_statement "if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }" if (parenthesized_expression "(puVar16[0x57] == '\0')" ( (binary_expression "puVar16[0x57] == '\0'" (subscript_expression "puVar16[0x57]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }" { (if_statement "if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;" if (parenthesized_expression "((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))" ( (binary_expression "(*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0')" (parenthesized_expression "(*(int *)(param_1 + 0xe8) != 0)" ( (binary_expression "*(int *)(param_1 + 0xe8) != 0" (pointer_expression "*(int *)(param_1 + 0xe8)" * (cast_expression "(int *)(param_1 + 0xe8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(*(char *)(param_1 + 0xd4) == '\0')" ( (binary_expression "*(char *)(param_1 + 0xd4) == '\0'" (pointer_expression "*(char *)(param_1 + 0xd4)" * (cast_expression "(char *)(param_1 + 0xd4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd4)" ( (binary_expression "param_1 + 0xd4" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_00039a67;" goto statement_identifier ;)) (goto_statement "goto LAB_00039df2;" goto statement_identifier ;) })) (if_statement "if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }" if (parenthesized_expression "(0 < *(int *)(puVar16 + 0x58))" ( (binary_expression "0 < *(int *)(puVar16 + 0x58)" number_literal < (pointer_expression "*(int *)(puVar16 + 0x58)" * (cast_expression "(int *)(puVar16 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) )) (compound_statement "{\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }" { (expression_statement "iVar13 = *unaff_retaddr;" (assignment_expression "iVar13 = *unaff_retaddr" identifier = (pointer_expression "*unaff_retaddr" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar13 + 0x84)" * (cast_expression "(undefined4 *)(iVar13 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x84)" ( (binary_expression "iVar13 + 0x84" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3aaa1" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar7 = FUN_00042890();" (assignment_expression "cVar7 = FUN_00042890()" identifier = (call_expression "FUN_00042890()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }" if (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }" { (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" * (cast_expression "(undefined4 *)(puVar16 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xf0c)" * (cast_expression "(undefined4 *)(param_1 + 0xf0c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf0c)" ( (binary_expression "param_1 + 0xf0c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" * (cast_expression "(undefined4 *)(puVar16 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;" (assignment_expression "*(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX" (pointer_expression "*(undefined **)(puVar16 + -0xc)" * (cast_expression "(undefined **)(puVar16 + -0xc)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "&UNK_00047352 + unaff_EBX" (pointer_expression "&UNK_00047352" & identifier) + identifier)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3acf0;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3acf0" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }" else (compound_statement "{\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }" { (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" * (cast_expression "(undefined4 *)(puVar16 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xf0c)" * (cast_expression "(undefined4 *)(param_1 + 0xf0c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf0c)" ( (binary_expression "param_1 + 0xf0c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" * (cast_expression "(undefined4 *)(puVar16 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;" (assignment_expression "*(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX" (pointer_expression "*(undefined **)(puVar16 + -0xc)" * (cast_expression "(undefined **)(puVar16 + -0xc)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "&UNK_00047312 + unaff_EBX" (pointer_expression "&UNK_00047312" & identifier) + identifier)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3aac3;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3aac3" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar13 = *(int *)(puVar16 + 0x58);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x58)" identifier = (pointer_expression "*(int *)(puVar16 + 0x58)" * (cast_expression "(int *)(puVar16 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)unaff_retaddr + 0x261) = 1;" (assignment_expression "*(undefined1 *)((int)unaff_retaddr + 0x261) = 1" (pointer_expression "*(undefined1 *)((int)unaff_retaddr + 0x261)" * (cast_expression "(undefined1 *)((int)unaff_retaddr + 0x261)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_retaddr + 0x261)" ( (binary_expression "(int)unaff_retaddr + 0x261" (cast_expression "(int)unaff_retaddr" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;" (assignment_expression "unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13" (subscript_expression "unaff_retaddr[0xcc]" identifier [ number_literal ]) = (binary_expression "unaff_retaddr[0xcc] - iVar13" (subscript_expression "unaff_retaddr[0xcc]" identifier [ number_literal ]) - identifier)) ;) }))) })) (goto_statement "goto LAB_0003a008;" goto statement_identifier ;) }))) (if_statement "if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0xe8) == 0)" ( (binary_expression "*(int *)(param_1 + 0xe8) == 0" (pointer_expression "*(int *)(param_1 + 0xe8)" * (cast_expression "(int *)(param_1 + 0xe8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }" { (labeled_statement "LAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];" statement_identifier : (expression_statement "iVar13 = unaff_retaddr[0x9f];" (assignment_expression "iVar13 = unaff_retaddr[0x9f]" identifier = (subscript_expression "unaff_retaddr[0x9f]" identifier [ number_literal ])) ;)) (labeled_statement "LAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);" statement_identifier : (expression_statement "iVar10 = *(int *)(iVar13 + 0x34);" (assignment_expression "iVar10 = *(int *)(iVar13 + 0x34)" identifier = (pointer_expression "*(int *)(iVar13 + 0x34)" * (cast_expression "(int *)(iVar13 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x34)" ( (binary_expression "iVar13 + 0x34" identifier + number_literal) ))))) ;)) (if_statement "if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }" { (labeled_statement "LAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }" statement_identifier : (if_statement "if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }" if (parenthesized_expression "((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0'))" ( (binary_expression "(*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')" (parenthesized_expression "(*(int *)(puVar16 + 0x3c) != 0)" ( (binary_expression "*(int *)(puVar16 + 0x3c) != 0" (pointer_expression "*(int *)(puVar16 + 0x3c)" * (cast_expression "(int *)(puVar16 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(*(char *)((int)unaff_retaddr + 0x261) == '\0')" ( (binary_expression "*(char *)((int)unaff_retaddr + 0x261) == '\0'" (pointer_expression "*(char *)((int)unaff_retaddr + 0x261)" * (cast_expression "(char *)((int)unaff_retaddr + 0x261)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_retaddr + 0x261)" ( (binary_expression "(int)unaff_retaddr + 0x261" (cast_expression "(int)unaff_retaddr" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }" { (expression_statement "iVar13 = *(int *)(param_1 + 0x8f8);" (assignment_expression "iVar13 = *(int *)(param_1 + 0x8f8)" identifier = (pointer_expression "*(int *)(param_1 + 0x8f8)" * (cast_expression "(int *)(param_1 + 0x8f8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x8f8)" ( (binary_expression "param_1 + 0x8f8" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = *(int *)(puVar16 + 0x3c);" (assignment_expression "iVar11 = *(int *)(puVar16 + 0x3c)" identifier = (pointer_expression "*(int *)(puVar16 + 0x3c)" * (cast_expression "(int *)(puVar16 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + 0x10) = iVar10;" (assignment_expression "*(int *)(puVar16 + 0x10) = iVar10" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar14 = iVar13 + *(int *)(param_1 + 0x124);" (assignment_expression "uVar14 = iVar13 + *(int *)(param_1 + 0x124)" identifier = (binary_expression "iVar13 + *(int *)(param_1 + 0x124)" identifier + (pointer_expression "*(int *)(param_1 + 0x124)" * (cast_expression "(int *)(param_1 + 0x124)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x124)" ( (binary_expression "param_1 + 0x124" identifier + number_literal) )))))) ;) (expression_statement "iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);" (assignment_expression "iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8)" identifier = (binary_expression "*(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8)" (pointer_expression "*(int *)(puVar16 + 0x58)" * (cast_expression "(int *)(puVar16 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0xe8)" * (cast_expression "(int *)(param_1 + 0xe8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) )))))) ;) (expression_statement "*(int *)(param_1 + 0xe8) = iVar10;" (assignment_expression "*(int *)(param_1 + 0xe8) = iVar10" (pointer_expression "*(int *)(param_1 + 0xe8)" * (cast_expression "(int *)(param_1 + 0xe8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar13 = uVar14 - iVar10;" (assignment_expression "iVar13 = uVar14 - iVar10" identifier = (binary_expression "uVar14 - iVar10" identifier - identifier)) ;) (if_statement "if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }" if (parenthesized_expression "((uint)(iVar11 + iVar10) <= uVar14)" ( (binary_expression "(uint)(iVar11 + iVar10) <= uVar14" (call_expression "(uint)(iVar11 + iVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar11 + iVar10)" ( (binary_expression "iVar11 + iVar10" identifier + identifier) ))) <= identifier) )) (compound_statement "{\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }" { (expression_statement "iVar13 = *(int *)(puVar16 + 0x3c);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x3c)" identifier = (pointer_expression "*(int *)(puVar16 + 0x3c)" * (cast_expression "(int *)(puVar16 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) ))))) ;) })) (expression_statement "*(int *)(puVar16 + 0x58) = iVar13;" (assignment_expression "*(int *)(puVar16 + 0x58) = iVar13" (pointer_expression "*(int *)(puVar16 + 0x58)" * (cast_expression "(int *)(puVar16 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;" (assignment_expression "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x56" (pointer_expression "*(undefined1 **)(puVar16 + -4)" * (cast_expression "(undefined1 **)(puVar16 + -4)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x56" identifier + number_literal)) ;) (expression_statement "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + -8)" * (cast_expression "(undefined1 **)(puVar16 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x58" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar16 + -0xc) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0xc) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0xc)" * (cast_expression "(int **)(puVar16 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3aa4b" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = (**(code **)(puVar16 + 0x10))();" (assignment_expression "iVar13 = (**(code **)(puVar16 + 0x10))()" identifier = (call_expression "(**(code **)(puVar16 + 0x10))()" (parenthesized_expression "(**(code **)(puVar16 + 0x10))" ( (pointer_expression "**(code **)(puVar16 + 0x10)" * (pointer_expression "*(code **)(puVar16 + 0x10)" * (cast_expression "(code **)(puVar16 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }" { (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" identifier = (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ;) (if_statement "if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }" if (parenthesized_expression "(puVar16[0x56] != '\0')" ( (binary_expression "puVar16[0x56] != '\0'" (subscript_expression "puVar16[0x56]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }" { (expression_statement "uVar14 = uVar14 | 1;" (assignment_expression "uVar14 = uVar14 | 1" identifier = (binary_expression "uVar14 | 1" identifier | number_literal)) ;) (expression_statement "*(uint *)(param_1 + 300) = uVar14;" (assignment_expression "*(uint *)(param_1 + 300) = uVar14" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = identifier) ;) })) (goto_statement "goto LAB_0003a00e;" goto statement_identifier ;) })) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) }))) })) (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" identifier = (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }" if (parenthesized_expression "(*(int *)(puVar16 + 0x10) != 0)" ( (binary_expression "*(int *)(puVar16 + 0x10) != 0" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }" { (expression_statement "uVar14 = uVar14 & 0xfffffffe;" (assignment_expression "uVar14 = uVar14 & 0xfffffffe" identifier = (binary_expression "uVar14 & 0xfffffffe" identifier & number_literal)) ;) (expression_statement "*(uint *)(param_1 + 300) = uVar14;" (assignment_expression "*(uint *)(param_1 + 300) = uVar14" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = identifier) ;) })) }) (else_clause "else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }" else (compound_statement "{\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }" { (labeled_statement "LAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }" statement_identifier : (if_statement "if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }" if (parenthesized_expression "((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0))" ( (binary_expression "(0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)" (parenthesized_expression "(0 < *(int *)(puVar16 + 0x58))" ( (binary_expression "0 < *(int *)(puVar16 + 0x58)" number_literal < (pointer_expression "*(int *)(puVar16 + 0x58)" * (cast_expression "(int *)(puVar16 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) )) || (parenthesized_expression "((puVar16[0x10] & 1) != 0)" ( (binary_expression "(puVar16[0x10] & 1) != 0" (parenthesized_expression "(puVar16[0x10] & 1)" ( (binary_expression "puVar16[0x10] & 1" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }" { (if_statement "if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }" if (parenthesized_expression "(*(char *)(param_1 + 0x934) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x934) != '\0'" (pointer_expression "*(char *)(param_1 + 0x934)" * (cast_expression "(char *)(param_1 + 0x934)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x934)" ( (binary_expression "param_1 + 0x934" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }" { (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 2;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 2" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar13 = 8;" (assignment_expression "iVar13 = 8" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ab68;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ab68" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000414c0();" (call_expression "FUN_000414c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "**(undefined1 **)(puVar16 + 0x38) = 1;" (assignment_expression "**(undefined1 **)(puVar16 + 0x38) = 1" (pointer_expression "**(undefined1 **)(puVar16 + 0x38)" * (pointer_expression "*(undefined1 **)(puVar16 + 0x38)" * (cast_expression "(undefined1 **)(puVar16 + 0x38)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x38)" ( (binary_expression "puVar16 + 0x38" identifier + number_literal) ))))) = number_literal) ;) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (expression_statement "iVar13 = *(int *)(param_1 + 0x120);" (assignment_expression "iVar13 = *(int *)(param_1 + 0x120)" identifier = (pointer_expression "*(int *)(param_1 + 0x120)" * (cast_expression "(int *)(param_1 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }" if (parenthesized_expression "(*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0)" ( (binary_expression "*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0" (binary_expression "*(int *)(puVar16 + 0x10) == 0" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) == number_literal) && (binary_expression "iVar13 == 0" identifier == number_literal)) )) (compound_statement "{\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }" { (if_statement "if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }" if (parenthesized_expression "((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0)" ( (binary_expression "(*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0" (parenthesized_expression "(*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003)" ( (binary_expression "*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003" (pointer_expression "*(uint *)(unaff_retaddr[0x9f] + 0x40)" * (cast_expression "(uint *)(unaff_retaddr[0x9f] + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr[0x9f] + 0x40)" ( (binary_expression "unaff_retaddr[0x9f] + 0x40" (subscript_expression "unaff_retaddr[0x9f]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n              iVar13 = 0;\n            }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) }) (else_clause "else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }" else (compound_statement "{\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }" { (if_statement "if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }" if (parenthesized_expression "(*(int *)(param_1 + 0x138) != 0)" ( (binary_expression "*(int *)(param_1 + 0x138) != 0" (pointer_expression "*(int *)(param_1 + 0x138)" * (cast_expression "(int *)(param_1 + 0x138)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x138)" ( (binary_expression "param_1 + 0x138" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }" { (if_statement "if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }" if (parenthesized_expression "(*(char *)((int)unaff_retaddr + 0x249) != '\0')" ( (binary_expression "*(char *)((int)unaff_retaddr + 0x249) != '\0'" (pointer_expression "*(char *)((int)unaff_retaddr + 0x249)" * (cast_expression "(char *)((int)unaff_retaddr + 0x249)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_retaddr + 0x249)" ( (binary_expression "(int)unaff_retaddr + 0x249" (cast_expression "(int)unaff_retaddr" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }" { (expression_statement "puVar17 = *(undefined1 **)(puVar16 + 0x38);" (assignment_expression "puVar17 = *(undefined1 **)(puVar16 + 0x38)" identifier = (pointer_expression "*(undefined1 **)(puVar16 + 0x38)" * (cast_expression "(undefined1 **)(puVar16 + 0x38)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x38)" ( (binary_expression "puVar16 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "*puVar17 = 1;" (assignment_expression "*puVar17 = 1" (pointer_expression "*puVar17" * identifier) = number_literal) ;) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (expression_statement "*(undefined1 *)(param_1 + 0x131) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x131) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x131)" * (cast_expression "(undefined1 *)(param_1 + 0x131)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x131)" ( (binary_expression "param_1 + 0x131" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "unaff_EBX + 0x47062" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a521;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a521" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar13 = *(int *)(param_1 + 0xeb8);" (assignment_expression "iVar13 = *(int *)(param_1 + 0xeb8)" identifier = (pointer_expression "*(int *)(param_1 + 0xeb8)" * (cast_expression "(int *)(param_1 + 0xeb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xeb8)" ( (binary_expression "param_1 + 0xeb8" identifier + number_literal) ))))) ;) (if_statement "if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }" if (parenthesized_expression "((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0'))" ( (binary_expression "(((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')" (parenthesized_expression "(((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1))" ( (binary_expression "((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)" (parenthesized_expression "((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0'))" ( (binary_expression "(*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')" (parenthesized_expression "(*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0)" ( (binary_expression "*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0" (binary_expression "*(int *)(param_1 + 0xebc) != 0" (pointer_expression "*(int *)(param_1 + 0xebc)" * (cast_expression "(int *)(param_1 + 0xebc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xebc)" ( (binary_expression "param_1 + 0xebc" identifier + number_literal) )))) != number_literal) || (binary_expression "iVar13 != 0" identifier != number_literal)) )) && (parenthesized_expression "(*(char *)(param_1 + 0xf8) == '\0')" ( (binary_expression "*(char *)(param_1 + 0xf8) == '\0'" (pointer_expression "*(char *)(param_1 + 0xf8)" * (cast_expression "(char *)(param_1 + 0xf8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(*(int *)(param_1 + 0x818) == 1)" ( (binary_expression "*(int *)(param_1 + 0x818) == 1" (pointer_expression "*(int *)(param_1 + 0x818)" * (cast_expression "(int *)(param_1 + 0x818)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x818)" ( (binary_expression "param_1 + 0x818" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(*(char *)(param_1 + 0x131) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x131) == '\0'" (pointer_expression "*(char *)(param_1 + 0x131)" * (cast_expression "(char *)(param_1 + 0x131)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x131)" ( (binary_expression "param_1 + 0x131" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }" { (if_statement "if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }" if (parenthesized_expression "((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94)))" ( (binary_expression "(*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))" (parenthesized_expression "(*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98))" ( (binary_expression "*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)" (pointer_expression "*(int *)(param_1 + 0xebc)" * (cast_expression "(int *)(param_1 + 0xebc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xebc)" ( (binary_expression "param_1 + 0xebc" identifier + number_literal) )))) == (pointer_expression "*(int *)(param_1 + 0x98)" * (cast_expression "(int *)(param_1 + 0x98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) )) && (parenthesized_expression "(iVar13 == *(int *)(param_1 + 0x94))" ( (binary_expression "iVar13 == *(int *)(param_1 + 0x94)" identifier == (pointer_expression "*(int *)(param_1 + 0x94)" * (cast_expression "(int *)(param_1 + 0x94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) ))))) ))) )) (compound_statement "{\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }" { (expression_statement "*(int *)(puVar16 + -4) = iVar13;" (assignment_expression "*(int *)(puVar16 + -4) = iVar13" (pointer_expression "*(int *)(puVar16 + -4)" * (cast_expression "(int *)(puVar16 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -8) = iVar13;" (assignment_expression "*(int *)(puVar16 + -8) = iVar13" (pointer_expression "*(int *)(puVar16 + -8)" * (cast_expression "(int *)(puVar16 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "unaff_EBX + 0x473a2" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ad9a" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ada6;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ada6" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000414c0();" (call_expression "FUN_000414c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar17 = *(undefined1 **)(puVar16 + 0x38);" (assignment_expression "puVar17 = *(undefined1 **)(puVar16 + 0x38)" identifier = (pointer_expression "*(undefined1 **)(puVar16 + 0x38)" * (cast_expression "(undefined1 **)(puVar16 + 0x38)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x38)" ( (binary_expression "puVar16 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "*puVar17 = 1;" (assignment_expression "*puVar17 = 1" (pointer_expression "*puVar17" * identifier) = number_literal) ;) }) (else_clause "else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }" else (compound_statement "{\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }" { (expression_statement "*(int **)(puVar16 + -4) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -4) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -4)" * (cast_expression "(int **)(puVar16 + -4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -8) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -8) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -8)" * (cast_expression "(int **)(puVar16 + -8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar13 = 0x21;" (assignment_expression "iVar13 = 0x21" identifier = number_literal) ;) (expression_statement "*(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;" (assignment_expression "*(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX" (pointer_expression "*(undefined **)(puVar16 + -0xc)" * (cast_expression "(undefined **)(puVar16 + -0xc)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "&UNK_000473ce + unaff_EBX" (pointer_expression "&UNK_000473ce" & identifier) + identifier)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a571;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a571" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027240();" (call_expression "FUN_00027240()" identifier (argument_list "()" ( ))) ;) }))) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (if_statement "if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }" if (parenthesized_expression "((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0))" ( (binary_expression "(*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)" (parenthesized_expression "(*(int *)(param_1 + 0x810) != 0)" ( (binary_expression "*(int *)(param_1 + 0x810) != 0" (pointer_expression "*(int *)(param_1 + 0x810)" * (cast_expression "(int *)(param_1 + 0x810)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x810)" ( (binary_expression "param_1 + 0x810" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(*(int *)(param_1 + 0xeb4) == 0)" ( (binary_expression "*(int *)(param_1 + 0xeb4) == 0" (pointer_expression "*(int *)(param_1 + 0xeb4)" * (cast_expression "(int *)(param_1 + 0xeb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xeb4)" ( (binary_expression "param_1 + 0xeb4" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }" { (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x11c)" * (cast_expression "(undefined4 *)(param_1 + 0x11c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x11c)" ( (binary_expression "param_1 + 0x11c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a5a3" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar7 = FUN_000397f0();" (assignment_expression "cVar7 = FUN_000397f0()" identifier = (call_expression "FUN_000397f0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }" if (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }" { (expression_statement "**(undefined1 **)(puVar16 + 0x38) = 1;" (assignment_expression "**(undefined1 **)(puVar16 + 0x38) = 1" (pointer_expression "**(undefined1 **)(puVar16 + 0x38)" * (pointer_expression "*(undefined1 **)(puVar16 + 0x38)" * (cast_expression "(undefined1 **)(puVar16 + 0x38)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x38)" ( (binary_expression "puVar16 + 0x38" identifier + number_literal) ))))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0xf48) = 0x130;" (assignment_expression "*(undefined4 *)(param_1 + 0xf48) = 0x130" (pointer_expression "*(undefined4 *)(param_1 + 0xf48)" * (cast_expression "(undefined4 *)(param_1 + 0xf48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf48)" ( (binary_expression "param_1 + 0xf48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int **)(puVar16 + -4) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -4) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -4)" * (cast_expression "(int **)(puVar16 + -4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -8) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -8) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -8)" * (cast_expression "(int **)(puVar16 + -8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;" (assignment_expression "*(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX" (pointer_expression "*(undefined **)(puVar16 + -0xc)" * (cast_expression "(undefined **)(puVar16 + -0xc)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "&UNK_0004740e + unaff_EBX" (pointer_expression "&UNK_0004740e" & identifier) + identifier)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a5cc" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a5d6" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000414c0();" (call_expression "FUN_000414c0()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00039e7c;" goto statement_identifier ;) })) })) (expression_statement "iVar13 = *(int *)(param_1 + 0x120);" (assignment_expression "iVar13 = *(int *)(param_1 + 0x120)" identifier = (pointer_expression "*(int *)(param_1 + 0x120)" * (cast_expression "(int *)(param_1 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) ))))) ;) }))) })) (expression_statement "*(int *)(param_1 + 0x120) = iVar13 + 1;" (assignment_expression "*(int *)(param_1 + 0x120) = iVar13 + 1" (pointer_expression "*(int *)(param_1 + 0x120)" * (cast_expression "(int *)(param_1 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) )))) = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (if_statement "if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }" if (parenthesized_expression "(*(char *)(param_1 + 0x93c) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x93c) == '\0'" (pointer_expression "*(char *)(param_1 + 0x93c)" * (cast_expression "(char *)(param_1 + 0x93c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x93c)" ( (binary_expression "param_1 + 0x93c" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }" { (labeled_statement "LAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }" statement_identifier : (if_statement "if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }" if (parenthesized_expression "(*(char *)(param_1 + 0x144) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x144) != '\0'" (pointer_expression "*(char *)(param_1 + 0x144)" * (cast_expression "(char *)(param_1 + 0x144)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x144)" ( (binary_expression "param_1 + 0x144" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }" { (labeled_statement "LAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;" statement_identifier : (expression_statement "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + -4)" * (cast_expression "(undefined1 **)(puVar16 + -4)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x58" identifier + number_literal)) ;)) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" * (cast_expression "(undefined4 *)(puVar16 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xe8)" * (cast_expression "(undefined4 *)(param_1 + 0xe8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a295;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a295" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar10 = FUN_0003f2e0();" (assignment_expression "iVar10 = FUN_0003f2e0()" identifier = (call_expression "FUN_0003f2e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }" if (parenthesized_expression "(0 < iVar10)" ( (binary_expression "0 < iVar10" number_literal < identifier) )) (compound_statement "{\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }" { (if_statement "if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }" if (parenthesized_expression "(iVar10 == 4)" ( (binary_expression "iVar10 == 4" identifier == number_literal) )) (compound_statement "{\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }" { (expression_statement "iVar13 = 0x17;" (assignment_expression "iVar13 = 0x17" identifier = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "unaff_EBX + 0x4707e" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ad5d" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027240();" (call_expression "FUN_00027240()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }" else (compound_statement "{\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }" { (expression_statement "iVar13 = 0x38;" (assignment_expression "iVar13 = 0x38" identifier = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0x10) = iVar10;" (assignment_expression "*(int *)(puVar16 + -0x10) = iVar10" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ac90;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ac90" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar9 = FUN_0003f850();" (assignment_expression "uVar9 = FUN_0003f850()" identifier = (call_expression "FUN_0003f850()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "unaff_EBX + 0x47092" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3aca1;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3aca1" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027240();" (call_expression "FUN_00027240()" identifier (argument_list "()" ( ))) ;) }))) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (if_statement "if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }" if (parenthesized_expression "(iVar10 == -1)" ( (binary_expression "iVar10 == -1" identifier == number_literal) )) (compound_statement "{\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }" { (expression_statement "iVar13 = unaff_retaddr[0xd];" (assignment_expression "iVar13 = unaff_retaddr[0xd]" identifier = (subscript_expression "unaff_retaddr[0xd]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }" { (expression_statement "*(int *)(puVar16 + -8) = iVar13;" (assignment_expression "*(int *)(puVar16 + -8) = iVar13" (pointer_expression "*(int *)(puVar16 + -8)" * (cast_expression "(int *)(puVar16 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;" (assignment_expression "*(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX" (pointer_expression "*(undefined **)(puVar16 + -0xc)" * (cast_expression "(undefined **)(puVar16 + -0xc)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "&UNK_0004742e + unaff_EBX" (pointer_expression "&UNK_0004742e" & identifier) + identifier)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = *unaff_retaddr;" (assignment_expression "*(int *)(puVar16 + -0x10) = *unaff_retaddr" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*unaff_retaddr" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a2ce" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar10 = *unaff_retaddr;" (assignment_expression "iVar10 = *unaff_retaddr" identifier = (pointer_expression "*unaff_retaddr" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar10 + 0x84)" * (cast_expression "(undefined4 *)(iVar10 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x84)" ( (binary_expression "iVar10 + 0x84" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a2e0" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar7 = FUN_00042890();" (assignment_expression "cVar7 = FUN_00042890()" identifier = (call_expression "FUN_00042890()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }" if (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }" { (expression_statement "*(int *)(puVar16 + -8) = iVar13;" (assignment_expression "*(int *)(puVar16 + -8) = iVar13" (pointer_expression "*(int *)(puVar16 + -8)" * (cast_expression "(int *)(puVar16 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "unaff_EBX + 0x470a9" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = *unaff_retaddr;" (assignment_expression "*(int *)(puVar16 + -0x10) = *unaff_retaddr" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*unaff_retaddr" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a2fe" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) (expression_statement "unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;" (assignment_expression "unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13" (subscript_expression "unaff_retaddr[0xcc]" identifier [ number_literal ]) = (binary_expression "unaff_retaddr[0xcc] - iVar13" (subscript_expression "unaff_retaddr[0xcc]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "*(undefined1 *)((int)unaff_retaddr + 0x261) = 1;" (assignment_expression "*(undefined1 *)((int)unaff_retaddr + 0x261) = 1" (pointer_expression "*(undefined1 *)((int)unaff_retaddr + 0x261)" * (cast_expression "(undefined1 *)((int)unaff_retaddr + 0x261)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_retaddr + 0x261)" ( (binary_expression "(int)unaff_retaddr + 0x261" (cast_expression "(int)unaff_retaddr" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) })) })) })) }))) (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0xb0)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" * (cast_expression "(undefined4 *)(param_1 + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = *(int *)(param_1 + 0xd8);" (assignment_expression "iVar13 = *(int *)(param_1 + 0xd8)" identifier = (pointer_expression "*(int *)(param_1 + 0xd8)" * (cast_expression "(int *)(param_1 + 0xd8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);" (assignment_expression "*(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac)" (pointer_expression "*(undefined4 *)(puVar16 + 0x28)" * (cast_expression "(undefined4 *)(puVar16 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xac)" * (cast_expression "(undefined4 *)(param_1 + 0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x2c) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + 0x2c) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + 0x2c)" * (cast_expression "(undefined4 *)(puVar16 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }" if (parenthesized_expression "((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0'))" ( (binary_expression "(iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')" (parenthesized_expression "(iVar13 == 1)" ( (binary_expression "iVar13 == 1" identifier == number_literal) )) && (parenthesized_expression "(*(char *)(param_1 + 0x131) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x131) == '\0'" (pointer_expression "*(char *)(param_1 + 0x131)" * (cast_expression "(char *)(param_1 + 0x131)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x131)" ( (binary_expression "param_1 + 0x131" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }" { (expression_statement "uVar2 = *(uint *)(param_1 + 0xe4);" (assignment_expression "uVar2 = *(uint *)(param_1 + 0xe4)" identifier = (pointer_expression "*(uint *)(param_1 + 0xe4)" * (cast_expression "(uint *)(param_1 + 0xe4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe4)" ( (binary_expression "param_1 + 0xe4" identifier + number_literal) ))))) ;) (expression_statement "puVar1 = (uint *)(puVar16 + 0x28);" (assignment_expression "puVar1 = (uint *)(puVar16 + 0x28)" identifier = (cast_expression "(uint *)(puVar16 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))) ;) (expression_statement "uVar14 = *puVar1;" (assignment_expression "uVar14 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*puVar1 = *puVar1 + uVar2;" (assignment_expression "*puVar1 = *puVar1 + uVar2" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 + uVar2" (pointer_expression "*puVar1" * identifier) + identifier)) ;) (expression_statement "*(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);" (assignment_expression "*(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2)" (pointer_expression "*(uint *)(puVar16 + 0x2c)" * (cast_expression "(uint *)(puVar16 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2)" (pointer_expression "*(int *)(puVar16 + 0x2c)" * (cast_expression "(int *)(puVar16 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) )))) + (cast_expression "(uint)CARRY4(uVar14,uVar2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar14,uVar2)" identifier (argument_list "(uVar14,uVar2)" ( identifier , identifier )))))) ;) (expression_statement "uVar9 = *(undefined4 *)(puVar16 + 0x2c);" (assignment_expression "uVar9 = *(undefined4 *)(puVar16 + 0x2c)" identifier = (pointer_expression "*(undefined4 *)(puVar16 + 0x2c)" * (cast_expression "(undefined4 *)(puVar16 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);" (assignment_expression "*(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28)" (pointer_expression "*(undefined4 *)(param_1 + 0xac)" * (cast_expression "(undefined4 *)(param_1 + 0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x28)" * (cast_expression "(undefined4 *)(puVar16 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0xb0) = uVar9;" (assignment_expression "*(undefined4 *)(param_1 + 0xb0) = uVar9" (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" * (cast_expression "(undefined4 *)(param_1 + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) )))) = identifier) ;) })) }) (else_clause "else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }" else (compound_statement "{\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }" { (if_statement "if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }" if (parenthesized_expression "(*(int *)(param_1 + 0xd8) == 0)" ( (binary_expression "*(int *)(param_1 + 0xd8) == 0" (pointer_expression "*(int *)(param_1 + 0xd8)" * (cast_expression "(int *)(param_1 + 0xd8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }" { (labeled_statement "LAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);" statement_identifier : (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" * (cast_expression "(undefined4 *)(puVar16 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" * (cast_expression "(undefined4 *)(puVar16 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;)) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xe8)" * (cast_expression "(undefined4 *)(param_1 + 0xe8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 3;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 3" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a05a;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a05a" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027090();" (call_expression "FUN_00027090()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_0003a05d;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" * (cast_expression "(undefined4 *)(puVar16 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xe4)" * (cast_expression "(undefined4 *)(param_1 + 0xe4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe4)" ( (binary_expression "param_1 + 0xe4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xc60)" * (cast_expression "(undefined4 *)(param_1 + 0xc60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc60)" ( (binary_expression "param_1 + 0xc60" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 3;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 3" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39ad1;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39ad1" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027090();" (call_expression "FUN_00027090()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;" if (parenthesized_expression "(*(int *)(param_1 + 0xd8) == 1)" ( (binary_expression "*(int *)(param_1 + 0xd8) == 1" (pointer_expression "*(int *)(param_1 + 0xd8)" * (cast_expression "(int *)(param_1 + 0xd8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0003a048;" goto statement_identifier ;)) (if_statement "if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;" if (parenthesized_expression "(*(char *)(param_1 + 0x144) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x144) != '\0'" (pointer_expression "*(char *)(param_1 + 0x144)" * (cast_expression "(char *)(param_1 + 0x144)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x144)" ( (binary_expression "param_1 + 0x144" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0003a280;" goto statement_identifier ;)) (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0xb0)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" * (cast_expression "(undefined4 *)(param_1 + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);" (assignment_expression "*(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac)" (pointer_expression "*(undefined4 *)(puVar16 + 0x28)" * (cast_expression "(undefined4 *)(puVar16 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xac)" * (cast_expression "(undefined4 *)(param_1 + 0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x2c) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + 0x2c) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + 0x2c)" * (cast_expression "(undefined4 *)(puVar16 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "uVar14 = *(uint *)(puVar16 + 0x58);" (assignment_expression "uVar14 = *(uint *)(puVar16 + 0x58)" identifier = (pointer_expression "*(uint *)(puVar16 + 0x58)" * (cast_expression "(uint *)(puVar16 + 0x58)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(uint *)(param_1 + 0xa4);" (assignment_expression "uVar2 = *(uint *)(param_1 + 0xa4)" identifier = (pointer_expression "*(uint *)(param_1 + 0xa4)" * (cast_expression "(uint *)(param_1 + 0xa4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa4)" ( (binary_expression "param_1 + 0xa4" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = *(uint *)(param_1 + 0xa0);" (assignment_expression "uVar8 = *(uint *)(param_1 + 0xa0)" identifier = (pointer_expression "*(uint *)(param_1 + 0xa0)" * (cast_expression "(uint *)(param_1 + 0xa0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar16 + 0x40) = uVar14;" (assignment_expression "*(uint *)(puVar16 + 0x40) = uVar14" (pointer_expression "*(uint *)(puVar16 + 0x40)" * (cast_expression "(uint *)(puVar16 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x40)" ( (binary_expression "puVar16 + 0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);" (assignment_expression "*(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28)" (pointer_expression "*(uint *)(puVar16 + 0x30)" * (cast_expression "(uint *)(puVar16 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x30)" ( (binary_expression "puVar16 + 0x30" identifier + number_literal) )))) = (binary_expression "uVar14 + *(uint *)(puVar16 + 0x28)" identifier + (pointer_expression "*(uint *)(puVar16 + 0x28)" * (cast_expression "(uint *)(puVar16 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))))) ;) (expression_statement "*(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));" (assignment_expression "*(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" (pointer_expression "*(uint *)(puVar16 + 0x34)" * (cast_expression "(uint *)(puVar16 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x34)" ( (binary_expression "puVar16 + 0x34" identifier + number_literal) )))) = (binary_expression "((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" (binary_expression "((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c)" (parenthesized_expression "((int)uVar14 >> 0x1f)" ( (binary_expression "(int)uVar14 >> 0x1f" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + (pointer_expression "*(int *)(puVar16 + 0x2c)" * (cast_expression "(int *)(puVar16 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) ))))) + (cast_expression "(uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" identifier (argument_list "(uVar14,*(uint *)(puVar16 + 0x28))" ( identifier , (pointer_expression "*(uint *)(puVar16 + 0x28)" * (cast_expression "(uint *)(puVar16 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))) )))))) ;) (if_statement "if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }" if (parenthesized_expression "(((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0))" ( (binary_expression "((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)" (parenthesized_expression "((uVar2 & uVar8) != 0xffffffff)" ( (binary_expression "(uVar2 & uVar8) != 0xffffffff" (parenthesized_expression "(uVar2 & uVar8)" ( (binary_expression "uVar2 & uVar8" identifier & identifier) )) != number_literal) )) && (parenthesized_expression "(iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)" ( (comma_expression "iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x34) - uVar2" identifier = (binary_expression "*(int *)(puVar16 + 0x34) - uVar2" (pointer_expression "*(int *)(puVar16 + 0x34)" * (cast_expression "(int *)(puVar16 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x34)" ( (binary_expression "puVar16 + 0x34" identifier + number_literal) )))) - identifier)) , (binary_expression "(SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0" (parenthesized_expression "(SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8)))" ( (binary_expression "SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))" (call_expression "SBORROW4(*(int *)(puVar16 + 0x34),uVar2)" identifier (argument_list "(*(int *)(puVar16 + 0x34),uVar2)" ( (pointer_expression "*(int *)(puVar16 + 0x34)" * (cast_expression "(int *)(puVar16 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x34)" ( (binary_expression "puVar16 + 0x34" identifier + number_literal) )))) , identifier ))) != (call_expression "SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))" identifier (argument_list "(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))" ( identifier , (call_expression "(uint)(*(uint *)(puVar16 + 0x30) < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(puVar16 + 0x30) < uVar8)" ( (binary_expression "*(uint *)(puVar16 + 0x30) < uVar8" (pointer_expression "*(uint *)(puVar16 + 0x30)" * (cast_expression "(uint *)(puVar16 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x30)" ( (binary_expression "puVar16 + 0x30" identifier + number_literal) )))) < identifier) ))) )))) )) == (binary_expression "(int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0" (cast_expression "(int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8))" ( (binary_expression "iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)" identifier - (call_expression "(uint)(*(uint *)(puVar16 + 0x30) < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(puVar16 + 0x30) < uVar8)" ( (binary_expression "*(uint *)(puVar16 + 0x30) < uVar8" (pointer_expression "*(uint *)(puVar16 + 0x30)" * (cast_expression "(uint *)(puVar16 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x30)" ( (binary_expression "puVar16 + 0x30" identifier + number_literal) )))) < identifier) )))) ))) < number_literal))) ))) )) (compound_statement "{\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }" { (expression_statement "iVar13 = *(int *)(puVar16 + 0x28);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x28)" identifier = (pointer_expression "*(int *)(puVar16 + 0x28)" * (cast_expression "(int *)(puVar16 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = *(int *)(puVar16 + 0x40);" (assignment_expression "iVar10 = *(int *)(puVar16 + 0x40)" identifier = (pointer_expression "*(int *)(puVar16 + 0x40)" * (cast_expression "(int *)(puVar16 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x40)" ( (binary_expression "puVar16 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar16 + 0x30) = uVar8;" (assignment_expression "*(uint *)(puVar16 + 0x30) = uVar8" (pointer_expression "*(uint *)(puVar16 + 0x30)" * (cast_expression "(uint *)(puVar16 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x30)" ( (binary_expression "puVar16 + 0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar11 = (iVar10 + iVar13) - uVar8;" (assignment_expression "iVar11 = (iVar10 + iVar13) - uVar8" identifier = (binary_expression "(iVar10 + iVar13) - uVar8" (parenthesized_expression "(iVar10 + iVar13)" ( (binary_expression "iVar10 + iVar13" identifier + identifier) )) - identifier)) ;) (expression_statement "*(int *)(puVar16 + 0x3c) = iVar11;" (assignment_expression "*(int *)(puVar16 + 0x3c) = iVar11" (pointer_expression "*(int *)(puVar16 + 0x3c)" * (cast_expression "(int *)(puVar16 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }" if (parenthesized_expression "((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0'))" ( (binary_expression "(iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')" (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(char *)(param_1 + 0x131) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x131) == '\0'" (pointer_expression "*(char *)(param_1 + 0x131)" * (cast_expression "(char *)(param_1 + 0x131)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x131)" ( (binary_expression "param_1 + 0x131" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }" { (expression_statement "iVar11 = *unaff_retaddr;" (assignment_expression "iVar11 = *unaff_retaddr" identifier = (pointer_expression "*unaff_retaddr" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar11 + 0x84)" * (cast_expression "(undefined4 *)(iVar11 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x84)" ( (binary_expression "iVar11 + 0x84" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a7f3" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar7 = FUN_00042890();" (assignment_expression "cVar7 = FUN_00042890()" identifier = (call_expression "FUN_00042890()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }" if (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }" { (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" * (cast_expression "(undefined4 *)(param_1 + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xac)" * (cast_expression "(undefined4 *)(param_1 + 0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4)" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xa4)" * (cast_expression "(undefined4 *)(param_1 + 0xa4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa4)" ( (binary_expression "param_1 + 0xa4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);" (assignment_expression "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0)" (pointer_expression "*(undefined4 *)(puVar16 + -0x1c)" * (cast_expression "(undefined4 *)(puVar16 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xa0)" * (cast_expression "(undefined4 *)(param_1 + 0xa0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);" (assignment_expression "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98)" (pointer_expression "*(undefined4 *)(puVar16 + -0x20)" * (cast_expression "(undefined4 *)(puVar16 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x20)" ( (binary_expression "puVar16 + -0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x98)" * (cast_expression "(undefined4 *)(param_1 + 0x98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94)" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" * (cast_expression "(undefined4 *)(puVar16 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x24)" ( (binary_expression "puVar16 + -0x24" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x94)" * (cast_expression "(undefined4 *)(param_1 + 0x94)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x28)" * (cast_expression "(undefined4 *)(puVar16 + -0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x3c)" * (cast_expression "(undefined4 *)(puVar16 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;" (assignment_expression "*(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2" (pointer_expression "*(int *)(puVar16 + -0x2c)" * (cast_expression "(int *)(puVar16 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x2c)" ( (binary_expression "puVar16 + -0x2c" identifier + number_literal) )))) = (binary_expression "unaff_EBX + 0x474c2" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar16 + -0x30) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x30) = param_1" (pointer_expression "*(int *)(puVar16 + -0x30)" * (cast_expression "(int *)(puVar16 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x30)" ( (binary_expression "puVar16 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;" (assignment_expression "*(undefined4 *)(puVar16 + -0x34) = 0x3a9e0" (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" * (cast_expression "(undefined4 *)(puVar16 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x34)" ( (binary_expression "puVar16 + -0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }" else (compound_statement "{\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }" { (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" * (cast_expression "(undefined4 *)(puVar16 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" * (cast_expression "(undefined4 *)(param_1 + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xac)" * (cast_expression "(undefined4 *)(param_1 + 0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xa4)" * (cast_expression "(undefined4 *)(param_1 + 0xa4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa4)" ( (binary_expression "param_1 + 0xa4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0)" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xa0)" * (cast_expression "(undefined4 *)(param_1 + 0xa0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);" (assignment_expression "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98)" (pointer_expression "*(undefined4 *)(puVar16 + -0x1c)" * (cast_expression "(undefined4 *)(puVar16 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x98)" * (cast_expression "(undefined4 *)(param_1 + 0x98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);" (assignment_expression "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94)" (pointer_expression "*(undefined4 *)(puVar16 + -0x20)" * (cast_expression "(undefined4 *)(puVar16 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x20)" ( (binary_expression "puVar16 + -0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x94)" * (cast_expression "(undefined4 *)(param_1 + 0x94)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" * (cast_expression "(undefined4 *)(puVar16 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x24)" ( (binary_expression "puVar16 + -0x24" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xf0c)" * (cast_expression "(undefined4 *)(param_1 + 0xf0c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf0c)" ( (binary_expression "param_1 + 0xf0c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x28)" * (cast_expression "(undefined4 *)(puVar16 + -0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x3c)" * (cast_expression "(undefined4 *)(puVar16 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;" (assignment_expression "*(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX" (pointer_expression "*(undefined **)(puVar16 + -0x2c)" * (cast_expression "(undefined **)(puVar16 + -0x2c)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x2c)" ( (binary_expression "puVar16 + -0x2c" identifier + number_literal) )))) = (binary_expression "&UNK_00047456 + unaff_EBX" (pointer_expression "&UNK_00047456" & identifier) + identifier)) ;) (expression_statement "*(int *)(puVar16 + -0x30) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x30) = param_1" (pointer_expression "*(int *)(puVar16 + -0x30)" * (cast_expression "(int *)(puVar16 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x30)" ( (binary_expression "puVar16 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x34) = 0x3a840;" (assignment_expression "*(undefined4 *)(puVar16 + -0x34) = 0x3a840" (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" * (cast_expression "(undefined4 *)(puVar16 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x34)" ( (binary_expression "puVar16 + -0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar11 = *(int *)(puVar16 + 0x30);" (assignment_expression "iVar11 = *(int *)(puVar16 + 0x30)" identifier = (pointer_expression "*(int *)(puVar16 + 0x30)" * (cast_expression "(int *)(puVar16 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x30)" ( (binary_expression "puVar16 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)unaff_retaddr + 0x261) = 1;" (assignment_expression "*(undefined1 *)((int)unaff_retaddr + 0x261) = 1" (pointer_expression "*(undefined1 *)((int)unaff_retaddr + 0x261)" * (cast_expression "(undefined1 *)((int)unaff_retaddr + 0x261)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_retaddr + 0x261)" ( (binary_expression "(int)unaff_retaddr + 0x261" (cast_expression "(int)unaff_retaddr" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));" (assignment_expression "unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13))" (subscript_expression "unaff_retaddr[0xcc]" identifier [ number_literal ]) = (binary_expression "unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13))" (subscript_expression "unaff_retaddr[0xcc]" identifier [ number_literal ]) + (parenthesized_expression "(iVar11 - (iVar10 + iVar13))" ( (binary_expression "iVar11 - (iVar10 + iVar13)" identifier - (parenthesized_expression "(iVar10 + iVar13)" ( (binary_expression "iVar10 + iVar13" identifier + identifier) ))) )))) ;) }))) (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0xb0)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" * (cast_expression "(undefined4 *)(param_1 + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);" (assignment_expression "*(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0)" (pointer_expression "*(undefined4 *)(puVar16 + 0x30)" * (cast_expression "(undefined4 *)(puVar16 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x30)" ( (binary_expression "puVar16 + 0x30" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xa0)" * (cast_expression "(undefined4 *)(param_1 + 0xa0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = *(int *)(param_1 + 0xac);" (assignment_expression "iVar13 = *(int *)(param_1 + 0xac)" identifier = (pointer_expression "*(int *)(param_1 + 0xac)" * (cast_expression "(int *)(param_1 + 0xac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x2c) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + 0x2c) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + 0x2c)" * (cast_expression "(undefined4 *)(puVar16 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + 0x28) = iVar13;" (assignment_expression "*(int *)(puVar16 + 0x28) = iVar13" (pointer_expression "*(int *)(puVar16 + 0x28)" * (cast_expression "(int *)(puVar16 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "uVar14 = *(int *)(puVar16 + 0x30) - iVar13;" (assignment_expression "uVar14 = *(int *)(puVar16 + 0x30) - iVar13" identifier = (binary_expression "*(int *)(puVar16 + 0x30) - iVar13" (pointer_expression "*(int *)(puVar16 + 0x30)" * (cast_expression "(int *)(puVar16 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x30)" ( (binary_expression "puVar16 + 0x30" identifier + number_literal) )))) - identifier)) ;) (if_statement "if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }" if (parenthesized_expression "((int)uVar14 < 0)" ( (binary_expression "(int)uVar14 < 0" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }" { (expression_statement "*(undefined4 *)(puVar16 + 0x58) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + 0x58) = 0" (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" * (cast_expression "(undefined4 *)(puVar16 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);" (assignment_expression "*(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28)" (pointer_expression "*(undefined4 *)(puVar16 + 0x30)" * (cast_expression "(undefined4 *)(puVar16 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x30)" ( (binary_expression "puVar16 + 0x30" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x28)" * (cast_expression "(undefined4 *)(puVar16 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);" (assignment_expression "*(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c)" (pointer_expression "*(undefined4 *)(puVar16 + 0x34)" * (cast_expression "(undefined4 *)(puVar16 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x34)" ( (binary_expression "puVar16 + 0x34" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x2c)" * (cast_expression "(undefined4 *)(puVar16 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) ))))) ;) }) (else_clause "else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }" else (compound_statement "{\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }" { (expression_statement "*(uint *)(puVar16 + 0x58) = uVar14;" (assignment_expression "*(uint *)(puVar16 + 0x58) = uVar14" (pointer_expression "*(uint *)(puVar16 + 0x58)" * (cast_expression "(uint *)(puVar16 + 0x58)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);" (assignment_expression "*(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28)" (pointer_expression "*(uint *)(puVar16 + 0x30)" * (cast_expression "(uint *)(puVar16 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x30)" ( (binary_expression "puVar16 + 0x30" identifier + number_literal) )))) = (binary_expression "uVar14 + *(uint *)(puVar16 + 0x28)" identifier + (pointer_expression "*(uint *)(puVar16 + 0x28)" * (cast_expression "(uint *)(puVar16 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))))) ;) (expression_statement "*(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));" (assignment_expression "*(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" (pointer_expression "*(uint *)(puVar16 + 0x34)" * (cast_expression "(uint *)(puVar16 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x34)" ( (binary_expression "puVar16 + 0x34" identifier + number_literal) )))) = (binary_expression "((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" (binary_expression "((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c)" (parenthesized_expression "((int)uVar14 >> 0x1f)" ( (binary_expression "(int)uVar14 >> 0x1f" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + (pointer_expression "*(int *)(puVar16 + 0x2c)" * (cast_expression "(int *)(puVar16 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) ))))) + (cast_expression "(uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" identifier (argument_list "(uVar14,*(uint *)(puVar16 + 0x28))" ( identifier , (pointer_expression "*(uint *)(puVar16 + 0x28)" * (cast_expression "(uint *)(puVar16 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))) )))))) ;) }))) (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal)) ;) })) (expression_statement "uVar9 = *(undefined4 *)(puVar16 + 0x30);" (assignment_expression "uVar9 = *(undefined4 *)(puVar16 + 0x30)" identifier = (pointer_expression "*(undefined4 *)(puVar16 + 0x30)" * (cast_expression "(undefined4 *)(puVar16 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x30)" ( (binary_expression "puVar16 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(undefined4 *)(puVar16 + 0x34);" (assignment_expression "uVar5 = *(undefined4 *)(puVar16 + 0x34)" identifier = (pointer_expression "*(undefined4 *)(puVar16 + 0x34)" * (cast_expression "(undefined4 *)(puVar16 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x34)" ( (binary_expression "puVar16 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0xac) = uVar9;" (assignment_expression "*(undefined4 *)(param_1 + 0xac) = uVar9" (pointer_expression "*(undefined4 *)(param_1 + 0xac)" * (cast_expression "(undefined4 *)(param_1 + 0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0xb0) = uVar5;" (assignment_expression "*(undefined4 *)(param_1 + 0xb0) = uVar5" (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" * (cast_expression "(undefined4 *)(param_1 + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = uVar5;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = uVar5" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a137;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a137" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001c950();" (call_expression "FUN_0001c950()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;" if (parenthesized_expression "(*(char *)(param_1 + 0x144) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x144) != '\0'" (pointer_expression "*(char *)(param_1 + 0x144)" * (cast_expression "(char *)(param_1 + 0x144)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x144)" ( (binary_expression "param_1 + 0x144" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00039df2;" goto statement_identifier ;)) (expression_statement "uVar14 = *(uint *)(param_1 + 0xd8);" (assignment_expression "uVar14 = *(uint *)(param_1 + 0xd8)" identifier = (pointer_expression "*(uint *)(param_1 + 0xd8)" * (cast_expression "(uint *)(param_1 + 0xd8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) ))))) ;) (if_statement "if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;" if (parenthesized_expression "((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)" ( (binary_expression "(*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0" (parenthesized_expression "(*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0)" ( (binary_expression "*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0" (binary_expression "*(int *)(puVar16 + 0x58) == 0" (pointer_expression "*(int *)(puVar16 + 0x58)" * (cast_expression "(int *)(puVar16 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) )))) == number_literal) && (binary_expression "uVar14 == 0" identifier == number_literal)) )) && (binary_expression "*(int *)(puVar16 + 0x10) == 0" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) == number_literal)) )) (goto_statement "goto LAB_0003a318;" goto statement_identifier ;)) (expression_statement "cVar7 = *(char *)(param_1 + 0x131);" (assignment_expression "cVar7 = *(char *)(param_1 + 0x131)" identifier = (pointer_expression "*(char *)(param_1 + 0x131)" * (cast_expression "(char *)(param_1 + 0x131)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x131)" ( (binary_expression "param_1 + 0x131" identifier + number_literal) ))))) ;) (if_statement "if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }" { (labeled_statement "LAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }" statement_identifier : (if_statement "if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }" if (parenthesized_expression "((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0))" ( (binary_expression "(*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)" (parenthesized_expression "(*(char *)(*unaff_retaddr + 0x95d) == '\0')" ( (binary_expression "*(char *)(*unaff_retaddr + 0x95d) == '\0'" (pointer_expression "*(char *)(*unaff_retaddr + 0x95d)" * (cast_expression "(char *)(*unaff_retaddr + 0x95d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*unaff_retaddr + 0x95d)" ( (binary_expression "*unaff_retaddr + 0x95d" (pointer_expression "*unaff_retaddr" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)" ( (comma_expression "iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0" (assignment_expression "iVar13 = *(int *)(param_1 + 0x118)" identifier = (pointer_expression "*(int *)(param_1 + 0x118)" * (cast_expression "(int *)(param_1 + 0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x118)" ( (binary_expression "param_1 + 0x118" identifier + number_literal) ))))) , (binary_expression "iVar13 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }" { (if_statement "if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }" if (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }" { (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" * (cast_expression "(undefined4 *)(puVar16 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" * (cast_expression "(undefined4 *)(puVar16 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xe8)" * (cast_expression "(undefined4 *)(param_1 + 0xe8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + -0xc) = iVar13;" (assignment_expression "*(int *)(puVar16 + -0xc) = iVar13" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a38f;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a38f" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00046a70();" (assignment_expression "iVar13 = FUN_00046a70()" identifier = (call_expression "FUN_00046a70()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_0003a392;" goto statement_identifier ;) })) (goto_statement "goto LAB_0003a1c7;" goto statement_identifier ;) }))) (expression_statement "iVar13 = unaff_retaddr[0x9f];" (assignment_expression "iVar13 = unaff_retaddr[0x9f]" identifier = (subscript_expression "unaff_retaddr[0x9f]" identifier [ number_literal ])) ;) (if_statement "if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }" if (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }" { (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0xe8);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0xe8)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xe8)" * (cast_expression "(undefined4 *)(param_1 + 0xe8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) ))))) ;) (if_statement "if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }" if (parenthesized_expression "((*(uint *)(iVar13 + 0x40) & 0xc000) == 0)" ( (binary_expression "(*(uint *)(iVar13 + 0x40) & 0xc000) == 0" (parenthesized_expression "(*(uint *)(iVar13 + 0x40) & 0xc000)" ( (binary_expression "*(uint *)(iVar13 + 0x40) & 0xc000" (pointer_expression "*(uint *)(iVar13 + 0x40)" * (cast_expression "(uint *)(iVar13 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x40)" ( (binary_expression "iVar13 + 0x40" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }" { (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" * (cast_expression "(undefined4 *)(puVar16 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" * (cast_expression "(undefined4 *)(puVar16 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a99a;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a99a" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00027580();" (assignment_expression "iVar13 = FUN_00027580()" identifier = (call_expression "FUN_00027580()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }" else (compound_statement "{\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }" { (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" * (cast_expression "(undefined4 *)(puVar16 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a4d0" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00055cf0();" (assignment_expression "iVar13 = FUN_00055cf0()" identifier = (call_expression "FUN_00055cf0()" identifier (argument_list "()" ( )))) ;) }))) (labeled_statement "LAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(param_1 + 0xd8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xd8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xd8)" * (cast_expression "(undefined4 *)(param_1 + 0xd8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) )))) = number_literal) ;)) (if_statement "if (iVar13 == 0) goto LAB_00039df2;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00039df2;" goto statement_identifier ;)) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) }) (else_clause "else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }" else (compound_statement "{\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }" { (if_statement "if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }" if (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }" { (expression_statement "uVar14 = *(uint *)(param_1 + 0xa4);" (assignment_expression "uVar14 = *(uint *)(param_1 + 0xa4)" identifier = (pointer_expression "*(uint *)(param_1 + 0xa4)" * (cast_expression "(uint *)(param_1 + 0xa4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa4)" ( (binary_expression "param_1 + 0xa4" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(uint *)(param_1 + 0xa0);" (assignment_expression "uVar2 = *(uint *)(param_1 + 0xa0)" identifier = (pointer_expression "*(uint *)(param_1 + 0xa0)" * (cast_expression "(uint *)(param_1 + 0xa0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = *(uint *)(param_1 + 0xe4);" (assignment_expression "uVar8 = *(uint *)(param_1 + 0xe4)" identifier = (pointer_expression "*(uint *)(param_1 + 0xe4)" * (cast_expression "(uint *)(param_1 + 0xe4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe4)" ( (binary_expression "param_1 + 0xe4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);" (assignment_expression "*(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60)" (pointer_expression "*(undefined4 *)(puVar16 + 0x28)" * (cast_expression "(undefined4 *)(puVar16 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xc60)" * (cast_expression "(undefined4 *)(param_1 + 0xc60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc60)" ( (binary_expression "param_1 + 0xc60" identifier + number_literal) ))))) ;) (if_statement "if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }" if (parenthesized_expression "(((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14))" ( (binary_expression "((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)" (parenthesized_expression "((uVar14 & uVar2) == 0xffffffff)" ( (binary_expression "(uVar14 & uVar2) == 0xffffffff" (parenthesized_expression "(uVar14 & uVar2)" ( (binary_expression "uVar14 & uVar2" identifier & identifier) )) == number_literal) )) || (parenthesized_expression "((int)(uint)(uVar2 < uVar8) <= (int)uVar14)" ( (binary_expression "(int)(uint)(uVar2 < uVar8) <= (int)uVar14" (cast_expression "(int)(uint)(uVar2 < uVar8)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(uVar2 < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 < uVar8)" ( (binary_expression "uVar2 < uVar8" identifier < identifier) )))) <= (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n                *(uint *)(puVar16 + -4) = uVar8;\n              }" { (expression_statement "*(uint *)(puVar16 + -4) = uVar8;" (assignment_expression "*(uint *)(puVar16 + -4) = uVar8" (pointer_expression "*(uint *)(puVar16 + -4)" * (cast_expression "(uint *)(puVar16 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }" else (compound_statement "{\n                *(uint *)(puVar16 + -4) = uVar2;\n              }" { (expression_statement "*(uint *)(puVar16 + -4) = uVar2;" (assignment_expression "*(uint *)(puVar16 + -4) = uVar2" (pointer_expression "*(uint *)(puVar16 + -4)" * (cast_expression "(uint *)(puVar16 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x28)" * (cast_expression "(undefined4 *)(puVar16 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a1ad" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00027580();" (assignment_expression "iVar13 = FUN_00027580()" identifier = (call_expression "FUN_00027580()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (expression_statement "uVar14 = *(uint *)(param_1 + 0xd8);" (assignment_expression "uVar14 = *(uint *)(param_1 + 0xd8)" identifier = (pointer_expression "*(uint *)(param_1 + 0xd8)" * (cast_expression "(uint *)(param_1 + 0xd8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) ))))) ;) })) (if_statement "if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }" if (parenthesized_expression "(uVar14 < 2)" ( (binary_expression "uVar14 < 2" identifier < number_literal) )) (compound_statement "{\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }" { (expression_statement "cVar7 = *(char *)(param_1 + 0x131);" (assignment_expression "cVar7 = *(char *)(param_1 + 0x131)" identifier = (pointer_expression "*(char *)(param_1 + 0x131)" * (cast_expression "(char *)(param_1 + 0x131)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x131)" ( (binary_expression "param_1 + 0x131" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0003a358;" goto statement_identifier ;) })) (labeled_statement "LAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];" statement_identifier : (expression_statement "iVar13 = unaff_retaddr[0x9f];" (assignment_expression "iVar13 = unaff_retaddr[0x9f]" identifier = (subscript_expression "unaff_retaddr[0x9f]" identifier [ number_literal ])) ;)) }))) (expression_statement "*(undefined4 *)(param_1 + 0xd8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xd8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xd8)" * (cast_expression "(undefined4 *)(param_1 + 0xd8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00039df8;" goto statement_identifier ;) }))) (labeled_statement "LAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];" statement_identifier : (expression_statement "iVar13 = unaff_retaddr[0x9f];" (assignment_expression "iVar13 = unaff_retaddr[0x9f]" identifier = (subscript_expression "unaff_retaddr[0x9f]" identifier [ number_literal ])) ;)) (expression_statement "iVar10 = *(int *)(iVar13 + 0x34);" (assignment_expression "iVar10 = *(int *)(iVar13 + 0x34)" identifier = (pointer_expression "*(int *)(iVar13 + 0x34)" * (cast_expression "(int *)(iVar13 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x34)" ( (binary_expression "iVar13 + 0x34" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 != 0) goto LAB_00039dff;" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039dff;" goto statement_identifier ;)) (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" identifier = (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ;) }))) (if_statement "if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;" if (parenthesized_expression "((uVar14 & 0x10) != 0)" ( (binary_expression "(uVar14 & 0x10) != 0" (parenthesized_expression "(uVar14 & 0x10)" ( (binary_expression "uVar14 & 0x10" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0003a00e;" goto statement_identifier ;)) (if_statement "if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }" if (parenthesized_expression "((*(byte *)(iVar13 + 0x40) & 0x30) == 0)" ( (binary_expression "(*(byte *)(iVar13 + 0x40) & 0x30) == 0" (parenthesized_expression "(*(byte *)(iVar13 + 0x40) & 0x30)" ( (binary_expression "*(byte *)(iVar13 + 0x40) & 0x30" (pointer_expression "*(byte *)(iVar13 + 0x40)" * (cast_expression "(byte *)(iVar13 + 0x40)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x40)" ( (binary_expression "iVar13 + 0x40" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }" { (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 0" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39feb;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39feb" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar7 = FUN_0007b420();" (assignment_expression "cVar7 = FUN_0007b420()" identifier = (call_expression "FUN_0007b420()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;" if (parenthesized_expression "((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))" ( (binary_expression "(cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14)))" (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14)))" ( (parenthesized_expression "((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))" ( (binary_expression "(*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14)" (binary_expression "(*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0" (parenthesized_expression "(*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3)" ( (binary_expression "*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3" (pointer_expression "*(byte *)(unaff_retaddr[0x9f] + 0x40)" * (cast_expression "(byte *)(unaff_retaddr[0x9f] + 0x40)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr[0x9f] + 0x40)" ( (binary_expression "unaff_retaddr[0x9f] + 0x40" (subscript_expression "unaff_retaddr[0x9f]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) == number_literal) || (parenthesized_expression "(unaff_retaddr[0x5e] != 0x14)" ( (binary_expression "unaff_retaddr[0x5e] != 0x14" (subscript_expression "unaff_retaddr[0x5e]" identifier [ number_literal ]) != number_literal) ))) )) ))) )) (goto_statement "goto LAB_0003a008;" goto statement_identifier ;)) })) (expression_statement "*(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;" (assignment_expression "*(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1" (pointer_expression "*(int *)(puVar16 + 0x1c)" * (cast_expression "(int *)(puVar16 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar16 + 0x1c) + -1" (pointer_expression "*(int *)(puVar16 + 0x1c)" * (cast_expression "(int *)(puVar16 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);" (assignment_expression "*(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20)" (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" * (cast_expression "(undefined4 *)(puVar16 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x20)" * (cast_expression "(undefined4 *)(puVar16 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(*(int *)(puVar16 + 0x1c) != -1)" ( (binary_expression "*(int *)(puVar16 + 0x1c) != -1" (pointer_expression "*(int *)(puVar16 + 0x1c)" * (cast_expression "(int *)(puVar16 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) )))) != number_literal) )) ;) (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" identifier = (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00039e5f:\n    puVar17 = *(undefined1 **)(puVar16 + 0x44);" statement_identifier : (expression_statement "puVar17 = *(undefined1 **)(puVar16 + 0x44);" (assignment_expression "puVar17 = *(undefined1 **)(puVar16 + 0x44)" identifier = (pointer_expression "*(undefined1 **)(puVar16 + 0x44)" * (cast_expression "(undefined1 **)(puVar16 + 0x44)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x44)" ( (binary_expression "puVar16 + 0x44" identifier + number_literal) ))))) ;)) (expression_statement "unaff_retaddr[0x158] = 1;" (assignment_expression "unaff_retaddr[0x158] = 1" (subscript_expression "unaff_retaddr[0x158]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar17 = 1;" (assignment_expression "*puVar17 = 1" (pointer_expression "*puVar17" * identifier) = number_literal) ;) (labeled_statement "joined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }" statement_identifier : (if_statement "if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }" if (parenthesized_expression "(((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0'))" ( (binary_expression "((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')" (parenthesized_expression "((uVar14 & 3) == 2)" ( (binary_expression "(uVar14 & 3) == 2" (parenthesized_expression "(uVar14 & 3)" ( (binary_expression "uVar14 & 3" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "(*(char *)((int)unaff_retaddr + 0x249) != '\0')" ( (binary_expression "*(char *)((int)unaff_retaddr + 0x249) != '\0'" (pointer_expression "*(char *)((int)unaff_retaddr + 0x249)" * (cast_expression "(char *)((int)unaff_retaddr + 0x249)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_retaddr + 0x249)" ( (binary_expression "(int)unaff_retaddr + 0x249" (cast_expression "(int)unaff_retaddr" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }" { (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "unaff_EBX + 0x4752a" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a44d;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a44d" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) (expression_statement "pcVar6 = *(char **)(puVar16 + 0x38);" (assignment_expression "pcVar6 = *(char **)(puVar16 + 0x38)" identifier = (pointer_expression "*(char **)(puVar16 + 0x38)" * (cast_expression "(char **)(puVar16 + 0x38)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x38)" ( (binary_expression "puVar16 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffd" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }" if (parenthesized_expression "(*pcVar6 != '\0')" ( (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }" { (labeled_statement "LAB_0003a468:\n        iVar13 = 0;" statement_identifier : (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }" else (compound_statement "{\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }" { (labeled_statement "LAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;" statement_identifier : (if_statement "if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;" if (parenthesized_expression "(**(char **)(puVar16 + 0x38) != '\0')" ( (binary_expression "**(char **)(puVar16 + 0x38) != '\0'" (pointer_expression "**(char **)(puVar16 + 0x38)" * (pointer_expression "*(char **)(puVar16 + 0x38)" * (cast_expression "(char **)(puVar16 + 0x38)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x38)" ( (binary_expression "puVar16 + 0x38" identifier + number_literal) ))))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0003a468;" goto statement_identifier ;))) (if_statement "if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;" if (parenthesized_expression "(((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0))" ( (binary_expression "((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)" (parenthesized_expression "((*(byte *)(param_1 + 300) & 2) != 0)" ( (binary_expression "(*(byte *)(param_1 + 300) & 2) != 0" (parenthesized_expression "(*(byte *)(param_1 + 300) & 2)" ( (binary_expression "*(byte *)(param_1 + 300) & 2" (pointer_expression "*(byte *)(param_1 + 300)" * (cast_expression "(byte *)(param_1 + 300)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((puVar16[8] & 2) != 0)" ( (binary_expression "(puVar16[8] & 2) != 0" (parenthesized_expression "(puVar16[8] & 2)" ( (binary_expression "puVar16[8] & 2" (subscript_expression "puVar16[8]" identifier [ number_literal ]) & number_literal) )) != number_literal) ))) )) (goto_statement "goto LAB_00039b2b;" goto statement_identifier ;)) })))) (expression_statement "puVar17 = puVar16 + 0x48;" (assignment_expression "puVar17 = puVar16 + 0x48" identifier = (binary_expression "puVar16 + 0x48" identifier + number_literal)) ;) (labeled_statement "LAB_00039ea1:\n    *(undefined1 **)(puVar16 + -0x10) = puVar17;" statement_identifier : (expression_statement "*(undefined1 **)(puVar16 + -0x10) = puVar17;" (assignment_expression "*(undefined1 **)(puVar16 + -0x10) = puVar17" (pointer_expression "*(undefined1 **)(puVar16 + -0x10)" * (cast_expression "(undefined1 **)(puVar16 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;)) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39eaa;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39eaa" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001ab40();" (call_expression "FUN_0001ab40()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar9 = *(undefined4 *)(puVar16 + 0x48);" (assignment_expression "uVar9 = *(undefined4 *)(puVar16 + 0x48)" identifier = (pointer_expression "*(undefined4 *)(puVar16 + 0x48)" * (cast_expression "(undefined4 *)(puVar16 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x48)" ( (binary_expression "puVar16 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = *(int *)(puVar16 + 0x20);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x20)" identifier = (pointer_expression "*(int *)(puVar16 + 0x20)" * (cast_expression "(int *)(puVar16 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "puVar15 = puVar16 + -4;" (assignment_expression "puVar15 = puVar16 + -4" identifier = (binary_expression "puVar16 + -4" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);" (assignment_expression "*(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44)" (pointer_expression "*(undefined4 *)(iVar13 + 0x38)" * (cast_expression "(undefined4 *)(iVar13 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x38)" ( (binary_expression "iVar13 + 0x38" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x44)" * (cast_expression "(undefined4 *)(puVar16 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x44)" ( (binary_expression "puVar16 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x3c) = uVar9;" (assignment_expression "*(undefined4 *)(iVar13 + 0x3c) = uVar9" (pointer_expression "*(undefined4 *)(iVar13 + 0x3c)" * (cast_expression "(undefined4 *)(iVar13 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x3c)" ( (binary_expression "iVar13 + 0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar4 = (undefined4 *)(puVar16 + -4);" (assignment_expression "puVar4 = (undefined4 *)(puVar16 + -4)" identifier = (cast_expression "(undefined4 *)(puVar16 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) ;) (if_statement "if (*(int *)(puVar16 + 0x1c) == 0) goto LAB_00039c5c;" if (parenthesized_expression "(*(int *)(puVar16 + 0x1c) == 0)" ( (binary_expression "*(int *)(puVar16 + 0x1c) == 0" (pointer_expression "*(int *)(puVar16 + 0x1c)" * (cast_expression "(int *)(puVar16 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00039c5c;" goto statement_identifier ;)) (labeled_statement "LAB_00039ecb:\n    puVar4 = *(undefined4 **)(param_1 + 0x9c);" statement_identifier : (expression_statement "puVar4 = *(undefined4 **)(param_1 + 0x9c);" (assignment_expression "puVar4 = *(undefined4 **)(param_1 + 0x9c)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 0x9c)" * (cast_expression "(undefined4 **)(param_1 + 0x9c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x9c)" ( (binary_expression "param_1 + 0x9c" identifier + number_literal) ))))) ;)) (if_statement "if (puVar4 != (undefined4 *)0x0) {\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }" if (parenthesized_expression "(puVar4 != (undefined4 *)0x0)" ( (binary_expression "puVar4 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }" { (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0xb0)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" * (cast_expression "(undefined4 *)(param_1 + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (expression_statement "*puVar4 = *(undefined4 *)(param_1 + 0xac);" (assignment_expression "*puVar4 = *(undefined4 *)(param_1 + 0xac)" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*(undefined4 *)(param_1 + 0xac)" * (cast_expression "(undefined4 *)(param_1 + 0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) ))))) ;) (expression_statement "puVar4[1] = uVar9;" (assignment_expression "puVar4[1] = uVar9" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "puVar4 = *(undefined4 **)(param_1 + 0xa8);" (assignment_expression "puVar4 = *(undefined4 **)(param_1 + 0xa8)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 0xa8)" * (cast_expression "(undefined4 **)(param_1 + 0xa8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xa8)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) ))))) ;) (if_statement "if (puVar4 == (undefined4 *)0x0) goto LAB_00039c69;" if (parenthesized_expression "(puVar4 == (undefined4 *)0x0)" ( (binary_expression "puVar4 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00039c69;" goto statement_identifier ;)) (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0xb8);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0xb8)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xb8)" * (cast_expression "(undefined4 *)(param_1 + 0xb8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb8)" ( (binary_expression "param_1 + 0xb8" identifier + number_literal) ))))) ;) (expression_statement "*puVar4 = *(undefined4 *)(param_1 + 0xb4);" (assignment_expression "*puVar4 = *(undefined4 *)(param_1 + 0xb4)" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*(undefined4 *)(param_1 + 0xb4)" * (cast_expression "(undefined4 *)(param_1 + 0xb4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb4)" ( (binary_expression "param_1 + 0xb4" identifier + number_literal) ))))) ;) (expression_statement "puVar4[1] = uVar9;" (assignment_expression "puVar4[1] = uVar9" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int **)(puVar15 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar15 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar15 + -0x10)" * (cast_expression "(int **)(puVar15 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x39f0e;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x39f0e" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" * (cast_expression "(undefined4 *)(puVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_0001cc10();" (assignment_expression "iVar13 = FUN_0001cc10()" identifier = (call_expression "FUN_0001cc10()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar16 = puVar15;" (assignment_expression "puVar16 = puVar15" identifier = identifier) ;) }))) (if_statement "if (iVar13 == 0) {\n    *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n    *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n    *(int *)(puVar16 + -0x10) = param_1;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39c90;\n    iVar13 = FUN_00033f20();\n    if (iVar13 != 0) goto LAB_00039d70;\n    if (*(int *)(param_1 + 300) == 0) {\n      if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a48c;\n      iVar10 = FUN_0001cc10();\n      if (iVar10 != 0) goto LAB_00039f19;\n    }\n    else {\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }\n    *(bool *)*(undefined4 *)(puVar16 + 0x38) = (*(byte *)(param_1 + 300) & 0x33) == 0;\n  }\n  else {\nLAB_00039f19:\n    iVar13 = 0x2a;\n  }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n    *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n    *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n    *(int *)(puVar16 + -0x10) = param_1;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39c90;\n    iVar13 = FUN_00033f20();\n    if (iVar13 != 0) goto LAB_00039d70;\n    if (*(int *)(param_1 + 300) == 0) {\n      if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a48c;\n      iVar10 = FUN_0001cc10();\n      if (iVar10 != 0) goto LAB_00039f19;\n    }\n    else {\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }\n    *(bool *)*(undefined4 *)(puVar16 + 0x38) = (*(byte *)(param_1 + 300) & 0x33) == 0;\n  }" { (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" * (cast_expression "(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0x24) + 0x3c)" ( (binary_expression "*(int *)(puVar16 + 0x24) + 0x3c" (pointer_expression "*(int *)(puVar16 + 0x24)" * (cast_expression "(int *)(puVar16 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24)" ( (binary_expression "puVar16 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" * (cast_expression "(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0x24) + 0x38)" ( (binary_expression "*(int *)(puVar16 + 0x24) + 0x38" (pointer_expression "*(int *)(puVar16 + 0x24)" * (cast_expression "(int *)(puVar16 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24)" ( (binary_expression "puVar16 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39c90;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39c90" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00033f20();" (assignment_expression "iVar13 = FUN_00033f20()" identifier = (call_expression "FUN_00033f20()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (if_statement "if (*(int *)(param_1 + 300) == 0) {\n      if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a48c;\n      iVar10 = FUN_0001cc10();\n      if (iVar10 != 0) goto LAB_00039f19;\n    }\n    else {\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }" if (parenthesized_expression "(*(int *)(param_1 + 300) == 0)" ( (binary_expression "*(int *)(param_1 + 300) == 0" (pointer_expression "*(int *)(param_1 + 300)" * (cast_expression "(int *)(param_1 + 300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a48c;\n      iVar10 = FUN_0001cc10();\n      if (iVar10 != 0) goto LAB_00039f19;\n    }" { (if_statement "if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }" if (parenthesized_expression "(*(char *)(param_1 + 0x934) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x934) == '\0'" (pointer_expression "*(char *)(param_1 + 0x934)" * (cast_expression "(char *)(param_1 + 0x934)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x934)" ( (binary_expression "param_1 + 0x934" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }" { (expression_statement "uVar14 = *(uint *)(param_1 + 0x98);" (assignment_expression "uVar14 = *(uint *)(param_1 + 0x98)" identifier = (pointer_expression "*(uint *)(param_1 + 0x98)" * (cast_expression "(uint *)(param_1 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);" (assignment_expression "*(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94)" (pointer_expression "*(undefined4 *)(puVar16 + 8)" * (cast_expression "(undefined4 *)(puVar16 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x94)" * (cast_expression "(undefined4 *)(param_1 + 0x94)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar16 + 0xc) = uVar14;" (assignment_expression "*(uint *)(puVar16 + 0xc) = uVar14" (pointer_expression "*(uint *)(puVar16 + 0xc)" * (cast_expression "(uint *)(puVar16 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }" if (parenthesized_expression "((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff)" ( (binary_expression "(uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff" (parenthesized_expression "(uVar14 & *(uint *)(puVar16 + 8))" ( (binary_expression "uVar14 & *(uint *)(puVar16 + 8)" identifier & (pointer_expression "*(uint *)(puVar16 + 8)" * (cast_expression "(uint *)(puVar16 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) ))))) )) == number_literal) )) (compound_statement "{\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }" { (labeled_statement "LAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;" statement_identifier : (if_statement "if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;" if (parenthesized_expression "((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4))" ( (binary_expression "(*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)" (parenthesized_expression "(*(char *)(param_1 + 0x144) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x144) == '\0'" (pointer_expression "*(char *)(param_1 + 0x144)" * (cast_expression "(char *)(param_1 + 0x144)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x144)" ( (binary_expression "param_1 + 0x144" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(unaff_retaddr[10] == 4)" ( (binary_expression "unaff_retaddr[10] == 4" (subscript_expression "unaff_retaddr[10]" identifier [ number_literal ]) == number_literal) ))) )) (goto_statement "goto LAB_0003a483;" goto statement_identifier ;))) (expression_statement "unaff_EBX = unaff_EBX + 0x47696;" (assignment_expression "unaff_EBX = unaff_EBX + 0x47696" identifier = (binary_expression "unaff_EBX + 0x47696" identifier + number_literal)) ;) }) (else_clause "else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }" else (compound_statement "{\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }" { (expression_statement "iVar10 = *(int *)(param_1 + 0xac);" (assignment_expression "iVar10 = *(int *)(param_1 + 0xac)" identifier = (pointer_expression "*(int *)(param_1 + 0xac)" * (cast_expression "(int *)(param_1 + 0xac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "*(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0)" (pointer_expression "*(undefined4 *)(puVar16 + 0x14)" * (cast_expression "(undefined4 *)(puVar16 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" * (cast_expression "(undefined4 *)(param_1 + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + 0x10) = iVar10;" (assignment_expression "*(int *)(puVar16 + 0x10) = iVar10" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = identifier) ;) (if_statement "if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;" if (parenthesized_expression "(((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0))" ( (binary_expression "((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)" (parenthesized_expression "((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8)))" ( (binary_expression "(*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))" (parenthesized_expression "(*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10)" ( (binary_expression "*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10" (binary_expression "*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc)" (pointer_expression "*(int *)(puVar16 + 0x14)" * (cast_expression "(int *)(puVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) )))) == (pointer_expression "*(int *)(puVar16 + 0xc)" * (cast_expression "(int *)(puVar16 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) ))))) && (binary_expression "*(int *)(puVar16 + 8) == iVar10" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) == identifier)) )) || (parenthesized_expression "(*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))" ( (binary_expression "*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8)" (binary_expression "*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8))" (pointer_expression "*(int *)(puVar16 + 0x14)" * (cast_expression "(int *)(puVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) )))) == (binary_expression "*(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8))" (binary_expression "*(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac)" (pointer_expression "*(int *)(puVar16 + 0xc)" * (cast_expression "(int *)(puVar16 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0xeac)" * (cast_expression "(int *)(param_1 + 0xeac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xeac)" ( (binary_expression "param_1 + 0xeac" identifier + number_literal) ))))) + (cast_expression "(uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8))" identifier (argument_list "(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8))" ( (pointer_expression "*(uint *)(puVar16 + 8)" * (cast_expression "(uint *)(puVar16 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) , (pointer_expression "*(uint *)(param_1 + 0xea8)" * (cast_expression "(uint *)(param_1 + 0xea8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xea8)" ( (binary_expression "param_1 + 0xea8" identifier + number_literal) )))) )))))) && (binary_expression "*(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8)" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) == (binary_expression "*(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8)" (pointer_expression "*(uint *)(puVar16 + 8)" * (cast_expression "(uint *)(puVar16 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) + (pointer_expression "*(uint *)(param_1 + 0xea8)" * (cast_expression "(uint *)(param_1 + 0xea8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xea8)" ( (binary_expression "param_1 + 0xea8" identifier + number_literal) ))))))) ))) )) || (parenthesized_expression "(*(int *)(param_1 + 0x138) != 0)" ( (binary_expression "*(int *)(param_1 + 0x138) != 0" (pointer_expression "*(int *)(param_1 + 0x138)" * (cast_expression "(int *)(param_1 + 0x138)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x138)" ( (binary_expression "param_1 + 0x138" identifier + number_literal) )))) != number_literal) ))) )) (goto_statement "goto LAB_0003a470;" goto statement_identifier ;)) (expression_statement "*(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));" (assignment_expression "*(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10))" (pointer_expression "*(uint *)(puVar16 + -4)" * (cast_expression "(uint *)(puVar16 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (binary_expression "(*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10))" (parenthesized_expression "(*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14))" ( (binary_expression "*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)" (pointer_expression "*(int *)(puVar16 + 0xc)" * (cast_expression "(int *)(puVar16 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) - (pointer_expression "*(int *)(puVar16 + 0x14)" * (cast_expression "(int *)(puVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) ))))) )) - (call_expression "(uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10))" ( (binary_expression "*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10)" (pointer_expression "*(uint *)(puVar16 + 8)" * (cast_expression "(uint *)(puVar16 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) < (pointer_expression "*(uint *)(puVar16 + 0x10)" * (cast_expression "(uint *)(puVar16 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) ))))) ;) (expression_statement "*(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);" (assignment_expression "*(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10)" (pointer_expression "*(uint *)(puVar16 + -8)" * (cast_expression "(uint *)(puVar16 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (binary_expression "*(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10)" (pointer_expression "*(uint *)(puVar16 + 8)" * (cast_expression "(uint *)(puVar16 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) - (pointer_expression "*(uint *)(puVar16 + 0x10)" * (cast_expression "(uint *)(puVar16 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))))) ;) (expression_statement "unaff_EBX = unaff_EBX + 0x47662;" (assignment_expression "unaff_EBX = unaff_EBX + 0x47662" identifier = (binary_expression "unaff_EBX + 0x47662" identifier + number_literal)) ;) }))) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar13 = 0x12;" (assignment_expression "iVar13 = 0x12" identifier = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39d6c;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39d6c" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027240();" (call_expression "FUN_00027240()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (labeled_statement "LAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;" statement_identifier : (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;)) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a48c;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a48c" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar10 = FUN_0001cc10();" (assignment_expression "iVar10 = FUN_0001cc10()" identifier = (call_expression "FUN_0001cc10()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar10 != 0) goto LAB_00039f19;" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039f19;" goto statement_identifier ;)) }) (else_clause "else {\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }" else (compound_statement "{\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }" { (expression_statement "*(undefined4 *)(puVar16 + -8) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = 0" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0xc) = param_1 + 0xcc;" (assignment_expression "*(int *)(puVar16 + -0xc) = param_1 + 0xcc" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "param_1 + 0xcc" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a40a;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a40a" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar10 = FUN_0003f980();" (assignment_expression "iVar10 = FUN_0003f980()" identifier = (call_expression "FUN_0003f980()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (compound_statement "{\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }" { (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0x98);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0x98)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x98)" * (cast_expression "(undefined4 *)(param_1 + 0x98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);" (assignment_expression "*(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94)" (pointer_expression "*(undefined4 *)(puVar16 + 8)" * (cast_expression "(undefined4 *)(puVar16 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x94)" * (cast_expression "(undefined4 *)(param_1 + 0x94)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(undefined4 *)(param_1 + 0xac);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 0xac)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xac)" * (cast_expression "(undefined4 *)(param_1 + 0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0xc) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + 0xc) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + 0xc)" * (cast_expression "(undefined4 *)(puVar16 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x10) = uVar5;" (assignment_expression "*(undefined4 *)(puVar16 + 0x10) = uVar5" (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" * (cast_expression "(undefined4 *)(puVar16 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "*(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0)" (pointer_expression "*(undefined4 *)(puVar16 + 0x14)" * (cast_expression "(undefined4 *)(puVar16 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" * (cast_expression "(undefined4 *)(param_1 + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (if_statement "if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }" if (parenthesized_expression "((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff)" ( (binary_expression "(*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff" (parenthesized_expression "(*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc))" ( (binary_expression "*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)" (pointer_expression "*(uint *)(puVar16 + 8)" * (cast_expression "(uint *)(puVar16 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) & (pointer_expression "*(uint *)(puVar16 + 0xc)" * (cast_expression "(uint *)(puVar16 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) ))))) )) == number_literal) )) (compound_statement "{\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }" { (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" * (cast_expression "(undefined4 *)(puVar16 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xbb0)" * (cast_expression "(undefined4 *)(param_1 + 0xbb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xbb0)" ( (binary_expression "param_1 + 0xbb0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xbac)" * (cast_expression "(undefined4 *)(param_1 + 0xbac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xbac)" ( (binary_expression "param_1 + 0xbac" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" * (cast_expression "(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0x24) + 0x3c)" ( (binary_expression "*(int *)(puVar16 + 0x24) + 0x3c" (pointer_expression "*(int *)(puVar16 + 0x24)" * (cast_expression "(int *)(puVar16 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24)" ( (binary_expression "puVar16 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" * (cast_expression "(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0x24) + 0x38)" ( (binary_expression "*(int *)(puVar16 + 0x24) + 0x38" (pointer_expression "*(int *)(puVar16 + 0x24)" * (cast_expression "(int *)(puVar16 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24)" ( (binary_expression "puVar16 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3acc4;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3acc4" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar9 = FUN_0001abe0();" (assignment_expression "uVar9 = FUN_0001abe0()" identifier = (call_expression "FUN_0001abe0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x14)" * (cast_expression "(undefined4 *)(puVar16 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" * (cast_expression "(undefined4 *)(puVar16 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "unaff_EBX = unaff_EBX + 0x4761e;" (assignment_expression "unaff_EBX = unaff_EBX + 0x4761e" identifier = (binary_expression "unaff_EBX + 0x4761e" identifier + number_literal)) ;) }) (else_clause "else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }" else (compound_statement "{\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }" { (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" * (cast_expression "(undefined4 *)(puVar16 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xbb0)" * (cast_expression "(undefined4 *)(param_1 + 0xbb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xbb0)" ( (binary_expression "param_1 + 0xbb0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xbac)" * (cast_expression "(undefined4 *)(param_1 + 0xbac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xbac)" ( (binary_expression "param_1 + 0xbac" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" * (cast_expression "(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0x24) + 0x3c)" ( (binary_expression "*(int *)(puVar16 + 0x24) + 0x3c" (pointer_expression "*(int *)(puVar16 + 0x24)" * (cast_expression "(int *)(puVar16 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24)" ( (binary_expression "puVar16 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" * (cast_expression "(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0x24) + 0x38)" ( (binary_expression "*(int *)(puVar16 + 0x24) + 0x38" (pointer_expression "*(int *)(puVar16 + 0x24)" * (cast_expression "(int *)(puVar16 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24)" ( (binary_expression "puVar16 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3abd6;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3abd6" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar9 = FUN_0001abe0();" (assignment_expression "uVar9 = FUN_0001abe0()" identifier = (call_expression "FUN_0001abe0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0xc)" * (cast_expression "(undefined4 *)(puVar16 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 8)" * (cast_expression "(undefined4 *)(puVar16 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x14)" * (cast_expression "(undefined4 *)(puVar16 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" * (cast_expression "(undefined4 *)(puVar16 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "unaff_EBX = unaff_EBX + 0x475ce;" (assignment_expression "unaff_EBX = unaff_EBX + 0x475ce" identifier = (binary_expression "unaff_EBX + 0x475ce" identifier + number_literal)) ;) }))) (expression_statement "*(int *)(puVar16 + -0x1c) = unaff_EBX;" (assignment_expression "*(int *)(puVar16 + -0x1c) = unaff_EBX" (pointer_expression "*(int *)(puVar16 + -0x1c)" * (cast_expression "(int *)(puVar16 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar13 = 0x1c;" (assignment_expression "iVar13 = 0x1c" identifier = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0x20) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x20) = param_1" (pointer_expression "*(int *)(puVar16 + -0x20)" * (cast_expression "(int *)(puVar16 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x20)" ( (binary_expression "puVar16 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = 0x3abfc;" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = 0x3abfc" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" * (cast_expression "(undefined4 *)(puVar16 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x24)" ( (binary_expression "puVar16 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027240();" (call_expression "FUN_00027240()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) }))) (expression_statement "*(bool *)*(undefined4 *)(puVar16 + 0x38) = (*(byte *)(param_1 + 300) & 0x33) == 0;" (assignment_expression "*(bool *)*(undefined4 *)(puVar16 + 0x38) = (*(byte *)(param_1 + 300) & 0x33) == 0" (pointer_expression "*(bool *)*(undefined4 *)(puVar16 + 0x38)" * (cast_expression "(bool *)*(undefined4 *)(puVar16 + 0x38)" ( (type_descriptor "bool *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*(undefined4 *)(puVar16 + 0x38)" * (cast_expression "(undefined4 *)(puVar16 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x38)" ( (binary_expression "puVar16 + 0x38" identifier + number_literal) )))))) = (binary_expression "(*(byte *)(param_1 + 300) & 0x33) == 0" (parenthesized_expression "(*(byte *)(param_1 + 300) & 0x33)" ( (binary_expression "*(byte *)(param_1 + 300) & 0x33" (pointer_expression "*(byte *)(param_1 + 300)" * (cast_expression "(byte *)(param_1 + 300)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal) )) == number_literal)) ;) }) (else_clause "else {\nLAB_00039f19:\n    iVar13 = 0x2a;\n  }" else (compound_statement "{\nLAB_00039f19:\n    iVar13 = 0x2a;\n  }" { (labeled_statement "LAB_00039f19:\n    iVar13 = 0x2a;" statement_identifier : (expression_statement "iVar13 = 0x2a;" (assignment_expression "iVar13 = 0x2a" identifier = number_literal) ;)) }))) (labeled_statement "LAB_00039d70:\n  if (*(int *)(puVar16 + 0x5c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar13;\n  }" statement_identifier : (if_statement "if (*(int *)(puVar16 + 0x5c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar13;\n  }" if (parenthesized_expression "(*(int *)(puVar16 + 0x5c) == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "*(int *)(puVar16 + 0x5c) == *(int *)(in_GS_OFFSET + 0x14)" (pointer_expression "*(int *)(puVar16 + 0x5c)" * (cast_expression "(int *)(puVar16 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x5c)" ( (binary_expression "puVar16 + 0x5c" identifier + number_literal) )))) == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return iVar13;\n  }" { (return_statement "return iVar13;" return identifier ;) }))) comment (expression_statement "*(undefined4 *)(puVar16 + -4) = 0x3ad7f;" (assignment_expression "*(undefined4 *)(puVar16 + -4) = 0x3ad7f" (pointer_expression "*(undefined4 *)(puVar16 + -4)" * (cast_expression "(undefined4 *)(puVar16 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0007c1a0();" (call_expression "FUN_0007c1a0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nCURLcode Curl_readwrite(connectdata *conn,Curl_easy *data,_Bool *done,_Bool *comeback)\n\n{\n  char **ppcVar1;\n  int *piVar2;\n  curltime *pcVar3;\n  curl_off_t *pcVar4;\n  undefined4 uVar5;\n  contenc_writer *writer;\n  void *pvVar6;\n  curl_off_t cVar7;\n  ssize_t sVar8;\n  _Bool _Var9;\n  char cVar10;\n  uint uVar11;\n  CURLcode CVar12;\n  _func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *p_Var13;\n  uint uVar14;\n  uint uVar15;\n  CHUNKcode code;\n  timediff_t tVar16;\n  char *pcVar17;\n  curl_socket_t writefd;\n  size_t sVar18;\n  int iVar19;\n  curl_socket_t readfd0;\n  int iVar20;\n  anon_enum_32 aVar21;\n  Curl_handler *pCVar22;\n  char *pcVar23;\n  int iVar24;\n  int in_GS_OFFSET;\n  bool bVar25;\n  uint uVar26;\n  ssize_t *local_74;\n  uint local_6c;\n  int local_60;\n  uint local_5c;\n  uint local_54;\n  int local_50;\n  uint local_4c;\n  int local_48;\n  int local_40;\n  time_t local_34;\n  int iStack_30;\n  _Bool readmore;\n  _Bool stop_reading;\n  ssize_t nread;\n  int local_20;\n  undefined4 uStack_14;\n  \n  readfd0 = -1;\n  uStack_14 = 0x3986e;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_74 = (ssize_t *)conn->cselect_bits;\n  conn->cselect_bits = 0;\n  uVar14 = (data->req).keepon;\n  if ((uVar14 & 0x15) == 1) {\n    readfd0 = conn->sockfd;\n  }\n  writefd = -1;\n  if ((uVar14 & 0x2a) == 2) {\n    writefd = conn->writesockfd;\n  }\n  if ((conn->data->state).drain == 0) {\n    if (local_74 == (ssize_t *)0x0) {\n      local_74 = (ssize_t *)Curl_socket_check(readfd0,-1,writefd,0);\n    }\n  }\n  else {\n    local_74 = (ssize_t *)((uint)local_74 | 1);\n  }\n  if (local_74 == (ssize_t *)0x4) {\n    CVar12 = CURLE_SEND_ERROR;\n    Curl_failf(data,"select/poll returned error");\n    goto LAB_00039d70;\n  }\n  uVar14 = (data->req).keepon;\n  local_5c = uVar14 & 1;\n  if ((local_5c == 0) || ((((uint)local_74 & 1) == 0 && ((conn->bits).stream_was_rewound == false)))\n     ) {\n    if (((uVar14 & 2) != 0) && (local_5c = 0, ((uint)local_74 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) &&\n         (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n          (int)(data->req).writebytecount == 0)) {\n        Curl_pgrsTime(data,TIMER_STARTTRANSFER);\n      }\n      sVar18 = (data->req).upload_present;\n      if (sVar18 == 0) {\n        CVar12 = Curl_get_upload_buffer(data);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        (data->req).upload_fromhere = (data->state).ulbuf;\n        if ((data->req).upload_done == false) {\n          pvVar6 = (data->req).protop;\n          if (((data->req).exp100 == EXP100_SENDING_REQUEST) && (*(int *)((int)pvVar6 + 0x1a0) == 2)\n             ) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            (data->req).exp100 = EXP100_AWAITING_CONTINUE;\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n            Curl_expire(data,(data->set).expect_100_timeout,EXPIRE_100_TIMEOUT);\n            goto LAB_00039ea1;\n          }\n          bVar25 = false;\n          if ((conn->handler->protocol & 0x40003) != 0) {\n            bVar25 = *(int *)((int)pvVar6 + 0x1a0) == 1;\n          }\n          CVar12 = Curl_fillreadbuffer(conn,(data->set).upload_buffer_size,(size_t *)&nread);\n          sVar8 = nread;\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          local_6c = nread;\n          if (nread == 0) goto LAB_0003a898;\n          if (0 < nread) {\n            (data->req).upload_present = nread;\n            if ((!bVar25) && (((data->set).prefer_ascii != false || ((data->set).crlf != false)))) {\n              pcVar17 = (data->state).scratch;\n              if (pcVar17 == (char *)0x0) {\n                pcVar17 = (char *)(*Curl_cmalloc)((data->set).upload_buffer_size * 2);\n                (data->state).scratch = pcVar17;\n                if (pcVar17 == (char *)0x0) {\n                  CVar12 = CURLE_OUT_OF_MEMORY;\n                  Curl_failf(data,"Failed to alloc scratch buffer!",conn,conn);\n                  goto LAB_00039d70;\n                }\n              }\n              iVar20 = 0;\n              iVar24 = 0;\n              while( true ) {\n                iVar19 = iVar24 + 1;\n                cVar10 = (data->req).upload_fromhere[iVar20];\n                if (cVar10 == '\n') {\n                  pcVar17[iVar24] = '\r';\n                  (data->state).scratch[iVar24 + 1] = '\n';\n                  iVar19 = iVar24 + 2;\n                  if ((data->set).crlf == false) {\n                    uVar14 = *(uint *)((int)&(data->state).infilesize + 4);\n                    uVar15 = (uint)(data->state).infilesize;\n                    if ((uVar14 & uVar15) != 0xffffffff) {\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }\n                  }\n                }\n                else {\n                  pcVar17[iVar24] = cVar10;\n                }\n                iVar20 = iVar20 + 1;\n                if (sVar8 == iVar20) break;\n                pcVar17 = (data->state).scratch;\n                iVar24 = iVar19;\n              }\n              if (sVar8 != iVar19) {\n                pcVar17 = (data->state).scratch;\n                (data->req).upload_present = iVar19;\n                (data->req).upload_fromhere = pcVar17;\n                local_6c = iVar19;\n              }\n            }\n            if (((conn->handler->protocol & 0x30000) != 0) &&\n               (CVar12 = Curl_smtp_escape_eob(conn,local_6c), CVar12 != CURLE_OK))\n            goto LAB_00039d70;\n            sVar18 = (data->req).upload_present;\n            goto LAB_00039b53;\n          }\n          uVar14 = (data->req).keepon;\n        }\n        else {\nLAB_0003a898:\n          uVar14 = (data->req).keepon;\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        (data->req).keepon = uVar14 & 0xfffffffd;\n        Curl_http2_done_sending(conn);\n        if (((conn->bits).rewindaftersend != false) &&\n           (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n      }\n      else {\nLAB_00039b53:\n        local_74 = &nread;\n        CVar12 = Curl_write(conn,conn->writesockfd,(data->req).upload_fromhere,sVar18,local_74);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        if ((data->set).verbose != false) {\n          Curl_debug(data,CURLINFO_DATA_OUT,(data->req).upload_fromhere,nread);\n        }\n        pcVar4 = &(data->req).writebytecount;\n        iVar24 = nread + (int)*pcVar4;\n        iVar20 = (nread >> 0x1f) + *(int *)((int)&(data->req).writebytecount + 4) +\n                 (uint)CARRY4(nread,(uint)*pcVar4);\n        _Var9 = (data->req).upload_chunky;\n        *(int *)&(data->req).writebytecount = iVar24;\n        *(int *)((int)&(data->req).writebytecount + 4) = iVar20;\n        if (((_Var9 == false) || ((data->req).forbidchunk != false)) &&\n           (iVar20 == *(int *)((int)&(data->state).infilesize + 4) &&\n            iVar24 == (int)(data->state).infilesize)) {\n          (data->req).upload_done = true;\n          Curl_infof(data,"We are completely uploaded and fine\n");\n        }\n        iVar24 = (data->req).upload_present;\n        if (iVar24 == nread) {\n          CVar12 = Curl_get_upload_buffer(data);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          pcVar17 = (data->state).ulbuf;\n          (data->req).upload_present = 0;\n          (data->req).upload_fromhere = pcVar17;\n          if ((data->req).upload_done != false) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            Curl_http2_done_sending(conn);\n            if (((conn->bits).rewindaftersend != false) &&\n               (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n          }\n        }\n        else {\n          ppcVar1 = &(data->req).upload_fromhere;\n          *ppcVar1 = *ppcVar1 + nread;\n          (data->req).upload_present = iVar24 - nread;\n        }\n        Curl_pgrsSetUploadCounter(data,(data->req).writebytecount);\n      }\nLAB_00039c0b:\n      Curl_now();\n      (data->req).now.tv_sec = local_34;\n      (data->req).now.tv_usec = iStack_30;\n      goto LAB_00039ecb;\n    }\n    Curl_now();\n    (data->req).now.tv_sec = local_34;\n    (data->req).now.tv_usec = iStack_30;\nLAB_00039c5c:\n    if (((data->req).exp100 == EXP100_AWAITING_CONTINUE) &&\n       (tVar16 = Curl_timediff((data->req).now,(data->req).start100),\n       (data->set).expect_100_timeout <= tVar16)) {\n      piVar2 = &(data->req).keepon;\n      *piVar2 = *piVar2 | 2;\n      (data->req).exp100 = EXP100_SEND_DATA;\n      Curl_expire_done(data,EXPIRE_100_TIMEOUT);\n      Curl_infof(data,"Done waiting for 100-continue\n");\n    }\nLAB_00039c69:\n    iVar24 = Curl_pgrsUpdate(conn);\n  }\n  else {\n    readmore = false;\n    local_6c = 0;\n    *done = false;\n    local_60 = 100;\n    *comeback = false;\n    local_40 = 0;\n    do {\n      uVar14 = (data->set).buffer_size;\n      if (((conn->handler->protocol & 3) == 0) || (conn->httpversion != 0x14)) {\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        uVar26 = (uint)(data->req).size;\n        if (((uVar15 & uVar26) != 0xffffffff) &&\n           (((data->req).header == false &&\n            (pcVar4 = &(data->req).bytecount, uVar11 = uVar26 - (int)*pcVar4,\n            (int)((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4)) < (int)(uint)(uVar11 < uVar14))))) {\n          uVar14 = uVar11;\n        }\n      }\n      if (uVar14 != 0) {\n        CVar12 = Curl_read(conn,conn->sockfd,(data->req).buf,uVar14,&nread);\n        if (CVar12 != CURLE_AGAIN) {\n          if (CVar12 == CURLE_OK) {\n            if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0)\n               && (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n                   (int)(data->req).writebytecount == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        local_5c = local_6c;\n        uVar14 = (data->req).keepon;\nLAB_0003a00e:\n        if (local_60 != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      nread = 0;\n      if (*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) {\n        if (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n            (int)(data->req).writebytecount == 0) {\nLAB_00039f9b:\n          Curl_pgrsTime(data,TIMER_STARTTRANSFER);\n          if ((data->req).exp100 != EXP100_SEND_DATA) {\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n          }\n        }\nLAB_000399eb:\n        if (nread == 0) goto LAB_00039f28;\n        if (nread < 1) goto LAB_0003a030;\n        local_6c = 0;\n        iVar24 = nread;\n      }\n      else {\nLAB_00039f28:\n        if ((data->req).bodywrites != 0) {\nLAB_0003a030:\n          uVar14 = (data->req).keepon & 0xfffffffe;\n          (data->req).keepon = uVar14;\n          goto LAB_0003a00e;\n        }\n        iVar24 = 0;\n        local_6c = local_5c;\n      }\n      (data->req).buf[iVar24] = '\0';\n      (data->req).str = (data->req).buf;\n      p_Var13 = conn->handler->readwrite;\n      if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0) {\n        CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n        if (CVar12 == CURLE_OK) {\n          if (readmore == false) goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = (data->req).keepon;\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if ((data->req).header != false) {\n        stop_reading = false;\n        CVar12 = Curl_http_readwrite_headers(data,conn,&nread,&stop_reading);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        p_Var13 = conn->handler->readwrite;\n        if (((p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n            && ((int)(uint)((int)(data->req).maxdownload != 0) <=\n                -*(int *)((int)&(data->req).maxdownload + 4))) && (0 < nread)) {\n          CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          if (readmore != false) goto LAB_0003a008;\n        }\n        if (stop_reading == false) {\n          if (((data->req).str != (char *)0x0) && ((data->req).header == false)) goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < nread) {\n          _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n          if (_Var9) {\n            Curl_infof(data,"Rewinding stream by : %zd bytes on url %s (zero-length body)\n",nread,\n                       (data->state).up.path);\n            (conn->bits).stream_was_rewound = true;\n            conn->read_pos = conn->read_pos - nread;\n          }\n          else {\n            Curl_infof(data,\n                       "Excess found in a non pipelined read: excess = %zd url = %s (zero-length body)\n"\n                       ,nread,(data->state).up.path);\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if ((data->req).str == (char *)0x0) {\nLAB_00039df2:\n        pCVar22 = conn->handler;\nLAB_00039df8:\n        p_Var13 = pCVar22->readwrite;\n        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0) {\nLAB_00039dff:\n          if ((local_40 != 0) && ((conn->bits).stream_was_rewound == false)) {\n            pcVar17 = (data->req).buf + (data->set).buffer_size;\n            pcVar23 = (data->req).str + nread;\n            (data->req).str = pcVar23;\n            nread = (int)pcVar17 - (int)pcVar23;\n            if (pcVar23 + local_40 <= pcVar17) {\n              nread = local_40;\n            }\n            CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n            if (CVar12 == CURLE_OK) {\n              uVar14 = (data->req).keepon;\n              if (readmore != false) {\n                uVar14 = uVar14 | 1;\n                (data->req).keepon = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = (data->req).keepon;\n        if (local_6c != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          (data->req).keepon = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < nread) || (local_6c != 0)) {\n          if ((data->set).opt_no_body != false) {\n            CVar12 = CURLE_WEIRD_SERVER_REPLY;\n            Curl_conncontrol(conn,2);\n            *done = true;\n            goto LAB_00039d70;\n          }\n          iVar24 = (data->req).bodywrites;\n          if (local_6c == 0 && iVar24 == 0) {\n            if ((conn->handler->protocol & 0x40003) == 0) {\n              iVar24 = 0;\n            }\n            else {\n              if ((data->req).newurl != (char *)0x0) {\n                if ((conn->bits).close != false) {\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }\n                (data->req).ignorebody = true;\n                Curl_infof(data,"Ignoring the response-body\n");\n              }\n              iVar24 = *(int *)((int)&(data->state).resume_from + 4);\n              iVar20 = (int)(data->state).resume_from;\n              if ((((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false)) {\n                if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)) {\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }\n                else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }\n                goto LAB_00039d70;\n              }\n              if ((((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)) &&\n                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)) {\n                *done = true;\n                (data->info).httpcode = 0x130;\n                Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);\n                Curl_conncontrol(conn,1);\n                goto LAB_00039e7c;\n              }\n              iVar24 = (data->req).bodywrites;\n            }\n          }\n          _Var9 = (data->set).verbose;\n          (data->req).bodywrites = iVar24 + 1;\n          if (_Var9 == false) {\nLAB_0003a05d:\n            if ((data->req).chunk != false) {\nLAB_0003a280:\n              code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread);\n              if (CHUNKE_OK < code) {\n                if (code == CHUNKE_WRITE_ERROR) {\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }\n                else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }\n                goto LAB_00039d70;\n              }\n              if (code == CHUNKE_STOP) {\n                sVar18 = (conn->chunk).dataleft;\n                piVar2 = &(data->req).keepon;\n                *piVar2 = *piVar2 & 0xfffffffe;\n                if (sVar18 != 0) {\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }\n              }\n            }\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n            if (((data->req).badheader == CURLDIGESTALGO_MD5SESS) &&\n               ((data->req).ignorebody == false)) {\n              uVar14 = (data->req).hbuflen;\n              bVar25 = CARRY4(local_54,uVar14);\n              local_54 = local_54 + uVar14;\n              local_50 = local_50 + (uint)bVar25;\n              *(uint *)&(data->req).bytecount = local_54;\n              *(int *)((int)&(data->req).bytecount + 4) = local_50;\n            }\n          }\n          else {\n            if (((data->req).badheader == CURLDIGESTALGO_MD5) ||\n               (Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),\n               (data->req).badheader == CURLDIGESTALGO_MD5SESS)) {\n              Curl_debug(data,CURLINFO_DATA_IN,(data->req).str,nread);\n              goto LAB_0003a05d;\n            }\n            if ((data->req).chunk != false) goto LAB_0003a280;\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n          }\n          uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n          local_4c = (uint)(data->req).maxdownload;\n          uVar15 = nread + local_54;\n          local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n          if (((uVar14 & local_4c) != 0xffffffff) &&\n             ((SBORROW4(local_48,uVar14) != SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c)))\n              == (int)((local_48 - uVar14) - (uint)(uVar15 < local_4c)) < 0)) {\n            iVar24 = nread + local_54;\n            local_40 = iVar24 - local_4c;\n            if ((local_40 != 0) && ((data->req).ignorebody == false)) {\n              _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n              if (_Var9) {\n                Curl_infof(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread);\n                (conn->bits).stream_was_rewound = true;\n                conn->read_pos = conn->read_pos + (local_4c - iVar24);\n              }\n              else {\n                Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4));\n              }\n              local_4c = (uint)(data->req).maxdownload;\n              local_50 = *(int *)((int)&(data->req).bytecount + 4);\n              local_54 = (uint)(data->req).bytecount;\n            }\n            nread = local_4c - local_54;\n            if (nread < 0) {\n              nread = 0;\n              local_4c = local_54;\n              local_48 = local_50;\n            }\n            else {\n              local_4c = nread + local_54;\n              local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n            }\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffe;\n            uVar15 = local_4c;\n          }\n          local_4c = uVar15;\n          *(uint *)&(data->req).bytecount = local_4c;\n          *(int *)((int)&(data->req).bytecount + 4) = local_48;\n          Curl_pgrsSetDownloadCounter(data,CONCAT44(local_48,local_4c));\n          if ((data->req).chunk != false) goto LAB_00039df2;\n          aVar21 = (data->req).badheader;\n          if ((nread == 0 && aVar21 == CURLDIGESTALGO_MD5) && local_6c == 0) goto LAB_0003a318;\n          cVar10 = (data->req).ignorebody;\n          if (aVar21 == CURLDIGESTALGO_MD5) {\nLAB_0003a358:\n            if (((conn->data->set).http_ce_skip == false) &&\n               (writer = (data->req).writer_stack, writer != (contenc_writer *)0x0)) {\n              if (cVar10 == '\0') {\n                CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            pCVar22 = conn->handler;\n            if (cVar10 == '\0') {\n              pcVar17 = (data->req).str;\n              if ((pCVar22->protocol & 0xc000) == 0) {\n                CVar12 = Curl_client_write(conn,1,pcVar17,nread);\n              }\n              else {\n                CVar12 = Curl_pop3_write(conn,pcVar17,nread);\n              }\nLAB_0003a392:\n              (data->req).badheader = CURLDIGESTALGO_MD5;\n              if (CVar12 == CURLE_OK) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if ((_Bool)cVar10 == false) {\n              uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n              uVar15 = (uint)(data->req).maxdownload;\n              uVar26 = (data->req).hbuflen;\n              if (((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26)))\n              {\n                uVar26 = uVar15;\n              }\n              CVar12 = Curl_client_write(conn,1,(data->state).headerbuff,uVar26);\n              if (CVar12 != CURLE_OK) goto LAB_00039d70;\n              aVar21 = (data->req).badheader;\n            }\n            if ((uint)aVar21 < 2) {\n              cVar10 = (data->req).ignorebody;\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            pCVar22 = conn->handler;\n          }\n          (data->req).badheader = CURLDIGESTALGO_MD5;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        pCVar22 = conn->handler;\n        p_Var13 = pCVar22->readwrite;\n        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n        goto LAB_00039dff;\n        uVar14 = (data->req).keepon;\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((((pCVar22->protocol & 0x30) == 0) && (_Var9 = Curl_ssl_data_pending(conn,0), !_Var9)) &&\n         (((conn->handler->protocol & 3) == 0 || (conn->httpversion != 0x14)))) goto LAB_0003a008;\n      local_60 = local_60 + -1;\n      local_6c = local_5c;\n    } while (local_60 != -1);\n    uVar14 = (data->req).keepon;\nLAB_00039e5f:\n    conn->cselect_bits = 1;\n    *comeback = true;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && ((conn->bits).close != false)) {\n      Curl_infof(data,"we are done reading and this is set to close, stop send\n");\n      piVar2 = &(data->req).keepon;\n      *piVar2 = *piVar2 & 0xfffffffd;\n      if (*done != false) {\nLAB_0003a468:\n        CVar12 = CURLE_OK;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (*done != false) goto LAB_0003a468;\n      if ((((data->req).keepon & 2) != 0) && (((uint)local_74 & 2) != 0)) goto LAB_00039b2b;\n    }\nLAB_00039ea1:\n    Curl_now();\n    (data->req).now.tv_sec = local_34;\n    (data->req).now.tv_usec = iStack_30;\n    if (local_5c == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    pcVar4 = (data->req).bytecountp;\n    if (pcVar4 != (curl_off_t *)0x0) {\n      uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4);\n      *(int *)pcVar4 = (int)(data->req).bytecount;\n      *(undefined4 *)((int)pcVar4 + 4) = uVar5;\n    }\n    pcVar4 = (data->req).writebytecountp;\n    if (pcVar4 == (curl_off_t *)0x0) goto LAB_00039c69;\n    uVar5 = *(undefined4 *)((int)&(data->req).writebytecount + 4);\n    *(int *)pcVar4 = (int)(data->req).writebytecount;\n    *(undefined4 *)((int)pcVar4 + 4) = uVar5;\n    iVar24 = Curl_pgrsUpdate(conn);\n  }\n  if (iVar24 == 0) {\n    iVar24 = (data->req).now.tv_usec;\n    CVar12 = Curl_speedcheck(data,(data->req).now);\n    if (CVar12 != CURLE_OK) goto LAB_00039d70;\n    if ((data->req).keepon == 0) {\n      if ((data->set).opt_no_body == false) {\n        uVar14 = (uint)(data->req).size;\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        if ((uVar15 & uVar14) == 0xffffffff) {\nLAB_0003a470:\n          if (((data->req).chunk == false) || ((conn->chunk).state == CHUNK_STOP))\n          goto LAB_0003a483;\n          pcVar17 = "transfer closed with outstanding read data remaining";\n        }\n        else {\n          uVar26 = *(uint *)((int)&(data->req).bytecount + 4);\n          uVar11 = (uint)(data->req).bytecount;\n          if (((uVar26 == uVar15 && uVar14 == uVar11) ||\n              (pcVar4 = &(data->state).crlf_conversions,\n              uVar26 == uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +\n                        (uint)CARRY4(uVar14,(uint)*pcVar4) && uVar11 == uVar14 + (int)*pcVar4)) ||\n             ((data->req).newurl != (char *)0x0)) goto LAB_0003a470;\n          iVar24 = uVar14 - uVar11;\n          pcVar17 = "transfer closed with %lld bytes remaining to read";\n        }\n        CVar12 = CURLE_PARTIAL_FILE;\n        Curl_failf(data,pcVar17,iVar24);\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      iVar24 = Curl_pgrsUpdate(conn);\n      if (iVar24 != 0) goto LAB_00039f19;\n    }\n    else {\n      tVar16 = Curl_timeleft(data,&(data->req).now,false);\n      if (tVar16 < 0) {\n        uVar14 = (uint)(data->req).size;\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        cVar7 = (data->req).bytecount;\n        uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4);\n        if ((uVar14 & uVar15) == 0xffffffff) {\n          pcVar3 = &(data->progress).t_startsingle;\n          uVar15 = pcVar3->tv_sec;\n          uVar14 = (data->req).now.tv_usec;\n          tVar16 = Curl_timediff((data->req).now,*pcVar3);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld bytes received";\n        }\n        else {\n          tVar16 = Curl_timediff((data->req).now,(data->progress).t_startsingle);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld out of %lld bytes received"\n          ;\n        }\n        CVar12 = CURLE_OPERATION_TIMEDOUT;\n        Curl_failf(data,pcVar17,tVar16,(int)cVar7,uVar5,uVar14,uVar15);\n        goto LAB_00039d70;\n      }\n    }\n    *done = ((data->req).keepon & 0x33) == 0;\n  }\n  else {\nLAB_00039f19:\n    CVar12 = CURLE_ABORTED_BY_CALLBACK;\n  }\nLAB_00039d70:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return CVar12;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" comment comment comment (function_definition "CURLcode Curl_readwrite(connectdata *conn,Curl_easy *data,_Bool *done,_Bool *comeback)\n\n{\n  char **ppcVar1;\n  int *piVar2;\n  curltime *pcVar3;\n  curl_off_t *pcVar4;\n  undefined4 uVar5;\n  contenc_writer *writer;\n  void *pvVar6;\n  curl_off_t cVar7;\n  ssize_t sVar8;\n  _Bool _Var9;\n  char cVar10;\n  uint uVar11;\n  CURLcode CVar12;\n  _func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *p_Var13;\n  uint uVar14;\n  uint uVar15;\n  CHUNKcode code;\n  timediff_t tVar16;\n  char *pcVar17;\n  curl_socket_t writefd;\n  size_t sVar18;\n  int iVar19;\n  curl_socket_t readfd0;\n  int iVar20;\n  anon_enum_32 aVar21;\n  Curl_handler *pCVar22;\n  char *pcVar23;\n  int iVar24;\n  int in_GS_OFFSET;\n  bool bVar25;\n  uint uVar26;\n  ssize_t *local_74;\n  uint local_6c;\n  int local_60;\n  uint local_5c;\n  uint local_54;\n  int local_50;\n  uint local_4c;\n  int local_48;\n  int local_40;\n  time_t local_34;\n  int iStack_30;\n  _Bool readmore;\n  _Bool stop_reading;\n  ssize_t nread;\n  int local_20;\n  undefined4 uStack_14;\n  \n  readfd0 = -1;\n  uStack_14 = 0x3986e;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_74 = (ssize_t *)conn->cselect_bits;\n  conn->cselect_bits = 0;\n  uVar14 = (data->req).keepon;\n  if ((uVar14 & 0x15) == 1) {\n    readfd0 = conn->sockfd;\n  }\n  writefd = -1;\n  if ((uVar14 & 0x2a) == 2) {\n    writefd = conn->writesockfd;\n  }\n  if ((conn->data->state).drain == 0) {\n    if (local_74 == (ssize_t *)0x0) {\n      local_74 = (ssize_t *)Curl_socket_check(readfd0,-1,writefd,0);\n    }\n  }\n  else {\n    local_74 = (ssize_t *)((uint)local_74 | 1);\n  }\n  if (local_74 == (ssize_t *)0x4) {\n    CVar12 = CURLE_SEND_ERROR;\n    Curl_failf(data,"select/poll returned error");\n    goto LAB_00039d70;\n  }\n  uVar14 = (data->req).keepon;\n  local_5c = uVar14 & 1;\n  if ((local_5c == 0) || ((((uint)local_74 & 1) == 0 && ((conn->bits).stream_was_rewound == false)))\n     ) {\n    if (((uVar14 & 2) != 0) && (local_5c = 0, ((uint)local_74 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) &&\n         (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n          (int)(data->req).writebytecount == 0)) {\n        Curl_pgrsTime(data,TIMER_STARTTRANSFER);\n      }\n      sVar18 = (data->req).upload_present;\n      if (sVar18 == 0) {\n        CVar12 = Curl_get_upload_buffer(data);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        (data->req).upload_fromhere = (data->state).ulbuf;\n        if ((data->req).upload_done == false) {\n          pvVar6 = (data->req).protop;\n          if (((data->req).exp100 == EXP100_SENDING_REQUEST) && (*(int *)((int)pvVar6 + 0x1a0) == 2)\n             ) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            (data->req).exp100 = EXP100_AWAITING_CONTINUE;\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n            Curl_expire(data,(data->set).expect_100_timeout,EXPIRE_100_TIMEOUT);\n            goto LAB_00039ea1;\n          }\n          bVar25 = false;\n          if ((conn->handler->protocol & 0x40003) != 0) {\n            bVar25 = *(int *)((int)pvVar6 + 0x1a0) == 1;\n          }\n          CVar12 = Curl_fillreadbuffer(conn,(data->set).upload_buffer_size,(size_t *)&nread);\n          sVar8 = nread;\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          local_6c = nread;\n          if (nread == 0) goto LAB_0003a898;\n          if (0 < nread) {\n            (data->req).upload_present = nread;\n            if ((!bVar25) && (((data->set).prefer_ascii != false || ((data->set).crlf != false)))) {\n              pcVar17 = (data->state).scratch;\n              if (pcVar17 == (char *)0x0) {\n                pcVar17 = (char *)(*Curl_cmalloc)((data->set).upload_buffer_size * 2);\n                (data->state).scratch = pcVar17;\n                if (pcVar17 == (char *)0x0) {\n                  CVar12 = CURLE_OUT_OF_MEMORY;\n                  Curl_failf(data,"Failed to alloc scratch buffer!",conn,conn);\n                  goto LAB_00039d70;\n                }\n              }\n              iVar20 = 0;\n              iVar24 = 0;\n              while( true ) {\n                iVar19 = iVar24 + 1;\n                cVar10 = (data->req).upload_fromhere[iVar20];\n                if (cVar10 == '\n') {\n                  pcVar17[iVar24] = '\r';\n                  (data->state).scratch[iVar24 + 1] = '\n';\n                  iVar19 = iVar24 + 2;\n                  if ((data->set).crlf == false) {\n                    uVar14 = *(uint *)((int)&(data->state).infilesize + 4);\n                    uVar15 = (uint)(data->state).infilesize;\n                    if ((uVar14 & uVar15) != 0xffffffff) {\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }\n                  }\n                }\n                else {\n                  pcVar17[iVar24] = cVar10;\n                }\n                iVar20 = iVar20 + 1;\n                if (sVar8 == iVar20) break;\n                pcVar17 = (data->state).scratch;\n                iVar24 = iVar19;\n              }\n              if (sVar8 != iVar19) {\n                pcVar17 = (data->state).scratch;\n                (data->req).upload_present = iVar19;\n                (data->req).upload_fromhere = pcVar17;\n                local_6c = iVar19;\n              }\n            }\n            if (((conn->handler->protocol & 0x30000) != 0) &&\n               (CVar12 = Curl_smtp_escape_eob(conn,local_6c), CVar12 != CURLE_OK))\n            goto LAB_00039d70;\n            sVar18 = (data->req).upload_present;\n            goto LAB_00039b53;\n          }\n          uVar14 = (data->req).keepon;\n        }\n        else {\nLAB_0003a898:\n          uVar14 = (data->req).keepon;\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        (data->req).keepon = uVar14 & 0xfffffffd;\n        Curl_http2_done_sending(conn);\n        if (((conn->bits).rewindaftersend != false) &&\n           (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n      }\n      else {\nLAB_00039b53:\n        local_74 = &nread;\n        CVar12 = Curl_write(conn,conn->writesockfd,(data->req).upload_fromhere,sVar18,local_74);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        if ((data->set).verbose != false) {\n          Curl_debug(data,CURLINFO_DATA_OUT,(data->req).upload_fromhere,nread);\n        }\n        pcVar4 = &(data->req).writebytecount;\n        iVar24 = nread + (int)*pcVar4;\n        iVar20 = (nread >> 0x1f) + *(int *)((int)&(data->req).writebytecount + 4) +\n                 (uint)CARRY4(nread,(uint)*pcVar4);\n        _Var9 = (data->req).upload_chunky;\n        *(int *)&(data->req).writebytecount = iVar24;\n        *(int *)((int)&(data->req).writebytecount + 4) = iVar20;\n        if (((_Var9 == false) || ((data->req).forbidchunk != false)) &&\n           (iVar20 == *(int *)((int)&(data->state).infilesize + 4) &&\n            iVar24 == (int)(data->state).infilesize)) {\n          (data->req).upload_done = true;\n          Curl_infof(data,"We are completely uploaded and fine\n");\n        }\n        iVar24 = (data->req).upload_present;\n        if (iVar24 == nread) {\n          CVar12 = Curl_get_upload_buffer(data);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          pcVar17 = (data->state).ulbuf;\n          (data->req).upload_present = 0;\n          (data->req).upload_fromhere = pcVar17;\n          if ((data->req).upload_done != false) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            Curl_http2_done_sending(conn);\n            if (((conn->bits).rewindaftersend != false) &&\n               (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n          }\n        }\n        else {\n          ppcVar1 = &(data->req).upload_fromhere;\n          *ppcVar1 = *ppcVar1 + nread;\n          (data->req).upload_present = iVar24 - nread;\n        }\n        Curl_pgrsSetUploadCounter(data,(data->req).writebytecount);\n      }\nLAB_00039c0b:\n      Curl_now();\n      (data->req).now.tv_sec = local_34;\n      (data->req).now.tv_usec = iStack_30;\n      goto LAB_00039ecb;\n    }\n    Curl_now();\n    (data->req).now.tv_sec = local_34;\n    (data->req).now.tv_usec = iStack_30;\nLAB_00039c5c:\n    if (((data->req).exp100 == EXP100_AWAITING_CONTINUE) &&\n       (tVar16 = Curl_timediff((data->req).now,(data->req).start100),\n       (data->set).expect_100_timeout <= tVar16)) {\n      piVar2 = &(data->req).keepon;\n      *piVar2 = *piVar2 | 2;\n      (data->req).exp100 = EXP100_SEND_DATA;\n      Curl_expire_done(data,EXPIRE_100_TIMEOUT);\n      Curl_infof(data,"Done waiting for 100-continue\n");\n    }\nLAB_00039c69:\n    iVar24 = Curl_pgrsUpdate(conn);\n  }\n  else {\n    readmore = false;\n    local_6c = 0;\n    *done = false;\n    local_60 = 100;\n    *comeback = false;\n    local_40 = 0;\n    do {\n      uVar14 = (data->set).buffer_size;\n      if (((conn->handler->protocol & 3) == 0) || (conn->httpversion != 0x14)) {\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        uVar26 = (uint)(data->req).size;\n        if (((uVar15 & uVar26) != 0xffffffff) &&\n           (((data->req).header == false &&\n            (pcVar4 = &(data->req).bytecount, uVar11 = uVar26 - (int)*pcVar4,\n            (int)((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4)) < (int)(uint)(uVar11 < uVar14))))) {\n          uVar14 = uVar11;\n        }\n      }\n      if (uVar14 != 0) {\n        CVar12 = Curl_read(conn,conn->sockfd,(data->req).buf,uVar14,&nread);\n        if (CVar12 != CURLE_AGAIN) {\n          if (CVar12 == CURLE_OK) {\n            if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0)\n               && (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n                   (int)(data->req).writebytecount == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        local_5c = local_6c;\n        uVar14 = (data->req).keepon;\nLAB_0003a00e:\n        if (local_60 != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      nread = 0;\n      if (*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) {\n        if (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n            (int)(data->req).writebytecount == 0) {\nLAB_00039f9b:\n          Curl_pgrsTime(data,TIMER_STARTTRANSFER);\n          if ((data->req).exp100 != EXP100_SEND_DATA) {\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n          }\n        }\nLAB_000399eb:\n        if (nread == 0) goto LAB_00039f28;\n        if (nread < 1) goto LAB_0003a030;\n        local_6c = 0;\n        iVar24 = nread;\n      }\n      else {\nLAB_00039f28:\n        if ((data->req).bodywrites != 0) {\nLAB_0003a030:\n          uVar14 = (data->req).keepon & 0xfffffffe;\n          (data->req).keepon = uVar14;\n          goto LAB_0003a00e;\n        }\n        iVar24 = 0;\n        local_6c = local_5c;\n      }\n      (data->req).buf[iVar24] = '\0';\n      (data->req).str = (data->req).buf;\n      p_Var13 = conn->handler->readwrite;\n      if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0) {\n        CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n        if (CVar12 == CURLE_OK) {\n          if (readmore == false) goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = (data->req).keepon;\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if ((data->req).header != false) {\n        stop_reading = false;\n        CVar12 = Curl_http_readwrite_headers(data,conn,&nread,&stop_reading);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        p_Var13 = conn->handler->readwrite;\n        if (((p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n            && ((int)(uint)((int)(data->req).maxdownload != 0) <=\n                -*(int *)((int)&(data->req).maxdownload + 4))) && (0 < nread)) {\n          CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          if (readmore != false) goto LAB_0003a008;\n        }\n        if (stop_reading == false) {\n          if (((data->req).str != (char *)0x0) && ((data->req).header == false)) goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < nread) {\n          _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n          if (_Var9) {\n            Curl_infof(data,"Rewinding stream by : %zd bytes on url %s (zero-length body)\n",nread,\n                       (data->state).up.path);\n            (conn->bits).stream_was_rewound = true;\n            conn->read_pos = conn->read_pos - nread;\n          }\n          else {\n            Curl_infof(data,\n                       "Excess found in a non pipelined read: excess = %zd url = %s (zero-length body)\n"\n                       ,nread,(data->state).up.path);\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if ((data->req).str == (char *)0x0) {\nLAB_00039df2:\n        pCVar22 = conn->handler;\nLAB_00039df8:\n        p_Var13 = pCVar22->readwrite;\n        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0) {\nLAB_00039dff:\n          if ((local_40 != 0) && ((conn->bits).stream_was_rewound == false)) {\n            pcVar17 = (data->req).buf + (data->set).buffer_size;\n            pcVar23 = (data->req).str + nread;\n            (data->req).str = pcVar23;\n            nread = (int)pcVar17 - (int)pcVar23;\n            if (pcVar23 + local_40 <= pcVar17) {\n              nread = local_40;\n            }\n            CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n            if (CVar12 == CURLE_OK) {\n              uVar14 = (data->req).keepon;\n              if (readmore != false) {\n                uVar14 = uVar14 | 1;\n                (data->req).keepon = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = (data->req).keepon;\n        if (local_6c != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          (data->req).keepon = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < nread) || (local_6c != 0)) {\n          if ((data->set).opt_no_body != false) {\n            CVar12 = CURLE_WEIRD_SERVER_REPLY;\n            Curl_conncontrol(conn,2);\n            *done = true;\n            goto LAB_00039d70;\n          }\n          iVar24 = (data->req).bodywrites;\n          if (local_6c == 0 && iVar24 == 0) {\n            if ((conn->handler->protocol & 0x40003) == 0) {\n              iVar24 = 0;\n            }\n            else {\n              if ((data->req).newurl != (char *)0x0) {\n                if ((conn->bits).close != false) {\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }\n                (data->req).ignorebody = true;\n                Curl_infof(data,"Ignoring the response-body\n");\n              }\n              iVar24 = *(int *)((int)&(data->state).resume_from + 4);\n              iVar20 = (int)(data->state).resume_from;\n              if ((((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false)) {\n                if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)) {\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }\n                else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }\n                goto LAB_00039d70;\n              }\n              if ((((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)) &&\n                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)) {\n                *done = true;\n                (data->info).httpcode = 0x130;\n                Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);\n                Curl_conncontrol(conn,1);\n                goto LAB_00039e7c;\n              }\n              iVar24 = (data->req).bodywrites;\n            }\n          }\n          _Var9 = (data->set).verbose;\n          (data->req).bodywrites = iVar24 + 1;\n          if (_Var9 == false) {\nLAB_0003a05d:\n            if ((data->req).chunk != false) {\nLAB_0003a280:\n              code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread);\n              if (CHUNKE_OK < code) {\n                if (code == CHUNKE_WRITE_ERROR) {\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }\n                else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }\n                goto LAB_00039d70;\n              }\n              if (code == CHUNKE_STOP) {\n                sVar18 = (conn->chunk).dataleft;\n                piVar2 = &(data->req).keepon;\n                *piVar2 = *piVar2 & 0xfffffffe;\n                if (sVar18 != 0) {\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }\n              }\n            }\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n            if (((data->req).badheader == CURLDIGESTALGO_MD5SESS) &&\n               ((data->req).ignorebody == false)) {\n              uVar14 = (data->req).hbuflen;\n              bVar25 = CARRY4(local_54,uVar14);\n              local_54 = local_54 + uVar14;\n              local_50 = local_50 + (uint)bVar25;\n              *(uint *)&(data->req).bytecount = local_54;\n              *(int *)((int)&(data->req).bytecount + 4) = local_50;\n            }\n          }\n          else {\n            if (((data->req).badheader == CURLDIGESTALGO_MD5) ||\n               (Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),\n               (data->req).badheader == CURLDIGESTALGO_MD5SESS)) {\n              Curl_debug(data,CURLINFO_DATA_IN,(data->req).str,nread);\n              goto LAB_0003a05d;\n            }\n            if ((data->req).chunk != false) goto LAB_0003a280;\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n          }\n          uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n          local_4c = (uint)(data->req).maxdownload;\n          uVar15 = nread + local_54;\n          local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n          if (((uVar14 & local_4c) != 0xffffffff) &&\n             ((SBORROW4(local_48,uVar14) != SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c)))\n              == (int)((local_48 - uVar14) - (uint)(uVar15 < local_4c)) < 0)) {\n            iVar24 = nread + local_54;\n            local_40 = iVar24 - local_4c;\n            if ((local_40 != 0) && ((data->req).ignorebody == false)) {\n              _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n              if (_Var9) {\n                Curl_infof(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread);\n                (conn->bits).stream_was_rewound = true;\n                conn->read_pos = conn->read_pos + (local_4c - iVar24);\n              }\n              else {\n                Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4));\n              }\n              local_4c = (uint)(data->req).maxdownload;\n              local_50 = *(int *)((int)&(data->req).bytecount + 4);\n              local_54 = (uint)(data->req).bytecount;\n            }\n            nread = local_4c - local_54;\n            if (nread < 0) {\n              nread = 0;\n              local_4c = local_54;\n              local_48 = local_50;\n            }\n            else {\n              local_4c = nread + local_54;\n              local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n            }\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffe;\n            uVar15 = local_4c;\n          }\n          local_4c = uVar15;\n          *(uint *)&(data->req).bytecount = local_4c;\n          *(int *)((int)&(data->req).bytecount + 4) = local_48;\n          Curl_pgrsSetDownloadCounter(data,CONCAT44(local_48,local_4c));\n          if ((data->req).chunk != false) goto LAB_00039df2;\n          aVar21 = (data->req).badheader;\n          if ((nread == 0 && aVar21 == CURLDIGESTALGO_MD5) && local_6c == 0) goto LAB_0003a318;\n          cVar10 = (data->req).ignorebody;\n          if (aVar21 == CURLDIGESTALGO_MD5) {\nLAB_0003a358:\n            if (((conn->data->set).http_ce_skip == false) &&\n               (writer = (data->req).writer_stack, writer != (contenc_writer *)0x0)) {\n              if (cVar10 == '\0') {\n                CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            pCVar22 = conn->handler;\n            if (cVar10 == '\0') {\n              pcVar17 = (data->req).str;\n              if ((pCVar22->protocol & 0xc000) == 0) {\n                CVar12 = Curl_client_write(conn,1,pcVar17,nread);\n              }\n              else {\n                CVar12 = Curl_pop3_write(conn,pcVar17,nread);\n              }\nLAB_0003a392:\n              (data->req).badheader = CURLDIGESTALGO_MD5;\n              if (CVar12 == CURLE_OK) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if ((_Bool)cVar10 == false) {\n              uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n              uVar15 = (uint)(data->req).maxdownload;\n              uVar26 = (data->req).hbuflen;\n              if (((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26)))\n              {\n                uVar26 = uVar15;\n              }\n              CVar12 = Curl_client_write(conn,1,(data->state).headerbuff,uVar26);\n              if (CVar12 != CURLE_OK) goto LAB_00039d70;\n              aVar21 = (data->req).badheader;\n            }\n            if ((uint)aVar21 < 2) {\n              cVar10 = (data->req).ignorebody;\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            pCVar22 = conn->handler;\n          }\n          (data->req).badheader = CURLDIGESTALGO_MD5;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        pCVar22 = conn->handler;\n        p_Var13 = pCVar22->readwrite;\n        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n        goto LAB_00039dff;\n        uVar14 = (data->req).keepon;\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((((pCVar22->protocol & 0x30) == 0) && (_Var9 = Curl_ssl_data_pending(conn,0), !_Var9)) &&\n         (((conn->handler->protocol & 3) == 0 || (conn->httpversion != 0x14)))) goto LAB_0003a008;\n      local_60 = local_60 + -1;\n      local_6c = local_5c;\n    } while (local_60 != -1);\n    uVar14 = (data->req).keepon;\nLAB_00039e5f:\n    conn->cselect_bits = 1;\n    *comeback = true;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && ((conn->bits).close != false)) {\n      Curl_infof(data,"we are done reading and this is set to close, stop send\n");\n      piVar2 = &(data->req).keepon;\n      *piVar2 = *piVar2 & 0xfffffffd;\n      if (*done != false) {\nLAB_0003a468:\n        CVar12 = CURLE_OK;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (*done != false) goto LAB_0003a468;\n      if ((((data->req).keepon & 2) != 0) && (((uint)local_74 & 2) != 0)) goto LAB_00039b2b;\n    }\nLAB_00039ea1:\n    Curl_now();\n    (data->req).now.tv_sec = local_34;\n    (data->req).now.tv_usec = iStack_30;\n    if (local_5c == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    pcVar4 = (data->req).bytecountp;\n    if (pcVar4 != (curl_off_t *)0x0) {\n      uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4);\n      *(int *)pcVar4 = (int)(data->req).bytecount;\n      *(undefined4 *)((int)pcVar4 + 4) = uVar5;\n    }\n    pcVar4 = (data->req).writebytecountp;\n    if (pcVar4 == (curl_off_t *)0x0) goto LAB_00039c69;\n    uVar5 = *(undefined4 *)((int)&(data->req).writebytecount + 4);\n    *(int *)pcVar4 = (int)(data->req).writebytecount;\n    *(undefined4 *)((int)pcVar4 + 4) = uVar5;\n    iVar24 = Curl_pgrsUpdate(conn);\n  }\n  if (iVar24 == 0) {\n    iVar24 = (data->req).now.tv_usec;\n    CVar12 = Curl_speedcheck(data,(data->req).now);\n    if (CVar12 != CURLE_OK) goto LAB_00039d70;\n    if ((data->req).keepon == 0) {\n      if ((data->set).opt_no_body == false) {\n        uVar14 = (uint)(data->req).size;\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        if ((uVar15 & uVar14) == 0xffffffff) {\nLAB_0003a470:\n          if (((data->req).chunk == false) || ((conn->chunk).state == CHUNK_STOP))\n          goto LAB_0003a483;\n          pcVar17 = "transfer closed with outstanding read data remaining";\n        }\n        else {\n          uVar26 = *(uint *)((int)&(data->req).bytecount + 4);\n          uVar11 = (uint)(data->req).bytecount;\n          if (((uVar26 == uVar15 && uVar14 == uVar11) ||\n              (pcVar4 = &(data->state).crlf_conversions,\n              uVar26 == uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +\n                        (uint)CARRY4(uVar14,(uint)*pcVar4) && uVar11 == uVar14 + (int)*pcVar4)) ||\n             ((data->req).newurl != (char *)0x0)) goto LAB_0003a470;\n          iVar24 = uVar14 - uVar11;\n          pcVar17 = "transfer closed with %lld bytes remaining to read";\n        }\n        CVar12 = CURLE_PARTIAL_FILE;\n        Curl_failf(data,pcVar17,iVar24);\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      iVar24 = Curl_pgrsUpdate(conn);\n      if (iVar24 != 0) goto LAB_00039f19;\n    }\n    else {\n      tVar16 = Curl_timeleft(data,&(data->req).now,false);\n      if (tVar16 < 0) {\n        uVar14 = (uint)(data->req).size;\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        cVar7 = (data->req).bytecount;\n        uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4);\n        if ((uVar14 & uVar15) == 0xffffffff) {\n          pcVar3 = &(data->progress).t_startsingle;\n          uVar15 = pcVar3->tv_sec;\n          uVar14 = (data->req).now.tv_usec;\n          tVar16 = Curl_timediff((data->req).now,*pcVar3);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld bytes received";\n        }\n        else {\n          tVar16 = Curl_timediff((data->req).now,(data->progress).t_startsingle);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld out of %lld bytes received"\n          ;\n        }\n        CVar12 = CURLE_OPERATION_TIMEDOUT;\n        Curl_failf(data,pcVar17,tVar16,(int)cVar7,uVar5,uVar14,uVar15);\n        goto LAB_00039d70;\n      }\n    }\n    *done = ((data->req).keepon & 0x33) == 0;\n  }\n  else {\nLAB_00039f19:\n    CVar12 = CURLE_ABORTED_BY_CALLBACK;\n  }\nLAB_00039d70:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return CVar12;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" type_identifier (function_declarator "Curl_readwrite(connectdata *conn,Curl_easy *data,_Bool *done,_Bool *comeback)" identifier (parameter_list "(connectdata *conn,Curl_easy *data,_Bool *done,_Bool *comeback)" ( (parameter_declaration "connectdata *conn" type_identifier (pointer_declarator "*conn" * identifier)) , (parameter_declaration "Curl_easy *data" type_identifier (pointer_declarator "*data" * identifier)) , (parameter_declaration "_Bool *done" type_identifier (pointer_declarator "*done" * identifier)) , (parameter_declaration "_Bool *comeback" type_identifier (pointer_declarator "*comeback" * identifier)) ))) (compound_statement "{\n  char **ppcVar1;\n  int *piVar2;\n  curltime *pcVar3;\n  curl_off_t *pcVar4;\n  undefined4 uVar5;\n  contenc_writer *writer;\n  void *pvVar6;\n  curl_off_t cVar7;\n  ssize_t sVar8;\n  _Bool _Var9;\n  char cVar10;\n  uint uVar11;\n  CURLcode CVar12;\n  _func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *p_Var13;\n  uint uVar14;\n  uint uVar15;\n  CHUNKcode code;\n  timediff_t tVar16;\n  char *pcVar17;\n  curl_socket_t writefd;\n  size_t sVar18;\n  int iVar19;\n  curl_socket_t readfd0;\n  int iVar20;\n  anon_enum_32 aVar21;\n  Curl_handler *pCVar22;\n  char *pcVar23;\n  int iVar24;\n  int in_GS_OFFSET;\n  bool bVar25;\n  uint uVar26;\n  ssize_t *local_74;\n  uint local_6c;\n  int local_60;\n  uint local_5c;\n  uint local_54;\n  int local_50;\n  uint local_4c;\n  int local_48;\n  int local_40;\n  time_t local_34;\n  int iStack_30;\n  _Bool readmore;\n  _Bool stop_reading;\n  ssize_t nread;\n  int local_20;\n  undefined4 uStack_14;\n  \n  readfd0 = -1;\n  uStack_14 = 0x3986e;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_74 = (ssize_t *)conn->cselect_bits;\n  conn->cselect_bits = 0;\n  uVar14 = (data->req).keepon;\n  if ((uVar14 & 0x15) == 1) {\n    readfd0 = conn->sockfd;\n  }\n  writefd = -1;\n  if ((uVar14 & 0x2a) == 2) {\n    writefd = conn->writesockfd;\n  }\n  if ((conn->data->state).drain == 0) {\n    if (local_74 == (ssize_t *)0x0) {\n      local_74 = (ssize_t *)Curl_socket_check(readfd0,-1,writefd,0);\n    }\n  }\n  else {\n    local_74 = (ssize_t *)((uint)local_74 | 1);\n  }\n  if (local_74 == (ssize_t *)0x4) {\n    CVar12 = CURLE_SEND_ERROR;\n    Curl_failf(data,"select/poll returned error");\n    goto LAB_00039d70;\n  }\n  uVar14 = (data->req).keepon;\n  local_5c = uVar14 & 1;\n  if ((local_5c == 0) || ((((uint)local_74 & 1) == 0 && ((conn->bits).stream_was_rewound == false)))\n     ) {\n    if (((uVar14 & 2) != 0) && (local_5c = 0, ((uint)local_74 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) &&\n         (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n          (int)(data->req).writebytecount == 0)) {\n        Curl_pgrsTime(data,TIMER_STARTTRANSFER);\n      }\n      sVar18 = (data->req).upload_present;\n      if (sVar18 == 0) {\n        CVar12 = Curl_get_upload_buffer(data);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        (data->req).upload_fromhere = (data->state).ulbuf;\n        if ((data->req).upload_done == false) {\n          pvVar6 = (data->req).protop;\n          if (((data->req).exp100 == EXP100_SENDING_REQUEST) && (*(int *)((int)pvVar6 + 0x1a0) == 2)\n             ) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            (data->req).exp100 = EXP100_AWAITING_CONTINUE;\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n            Curl_expire(data,(data->set).expect_100_timeout,EXPIRE_100_TIMEOUT);\n            goto LAB_00039ea1;\n          }\n          bVar25 = false;\n          if ((conn->handler->protocol & 0x40003) != 0) {\n            bVar25 = *(int *)((int)pvVar6 + 0x1a0) == 1;\n          }\n          CVar12 = Curl_fillreadbuffer(conn,(data->set).upload_buffer_size,(size_t *)&nread);\n          sVar8 = nread;\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          local_6c = nread;\n          if (nread == 0) goto LAB_0003a898;\n          if (0 < nread) {\n            (data->req).upload_present = nread;\n            if ((!bVar25) && (((data->set).prefer_ascii != false || ((data->set).crlf != false)))) {\n              pcVar17 = (data->state).scratch;\n              if (pcVar17 == (char *)0x0) {\n                pcVar17 = (char *)(*Curl_cmalloc)((data->set).upload_buffer_size * 2);\n                (data->state).scratch = pcVar17;\n                if (pcVar17 == (char *)0x0) {\n                  CVar12 = CURLE_OUT_OF_MEMORY;\n                  Curl_failf(data,"Failed to alloc scratch buffer!",conn,conn);\n                  goto LAB_00039d70;\n                }\n              }\n              iVar20 = 0;\n              iVar24 = 0;\n              while( true ) {\n                iVar19 = iVar24 + 1;\n                cVar10 = (data->req).upload_fromhere[iVar20];\n                if (cVar10 == '\n') {\n                  pcVar17[iVar24] = '\r';\n                  (data->state).scratch[iVar24 + 1] = '\n';\n                  iVar19 = iVar24 + 2;\n                  if ((data->set).crlf == false) {\n                    uVar14 = *(uint *)((int)&(data->state).infilesize + 4);\n                    uVar15 = (uint)(data->state).infilesize;\n                    if ((uVar14 & uVar15) != 0xffffffff) {\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }\n                  }\n                }\n                else {\n                  pcVar17[iVar24] = cVar10;\n                }\n                iVar20 = iVar20 + 1;\n                if (sVar8 == iVar20) break;\n                pcVar17 = (data->state).scratch;\n                iVar24 = iVar19;\n              }\n              if (sVar8 != iVar19) {\n                pcVar17 = (data->state).scratch;\n                (data->req).upload_present = iVar19;\n                (data->req).upload_fromhere = pcVar17;\n                local_6c = iVar19;\n              }\n            }\n            if (((conn->handler->protocol & 0x30000) != 0) &&\n               (CVar12 = Curl_smtp_escape_eob(conn,local_6c), CVar12 != CURLE_OK))\n            goto LAB_00039d70;\n            sVar18 = (data->req).upload_present;\n            goto LAB_00039b53;\n          }\n          uVar14 = (data->req).keepon;\n        }\n        else {\nLAB_0003a898:\n          uVar14 = (data->req).keepon;\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        (data->req).keepon = uVar14 & 0xfffffffd;\n        Curl_http2_done_sending(conn);\n        if (((conn->bits).rewindaftersend != false) &&\n           (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n      }\n      else {\nLAB_00039b53:\n        local_74 = &nread;\n        CVar12 = Curl_write(conn,conn->writesockfd,(data->req).upload_fromhere,sVar18,local_74);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        if ((data->set).verbose != false) {\n          Curl_debug(data,CURLINFO_DATA_OUT,(data->req).upload_fromhere,nread);\n        }\n        pcVar4 = &(data->req).writebytecount;\n        iVar24 = nread + (int)*pcVar4;\n        iVar20 = (nread >> 0x1f) + *(int *)((int)&(data->req).writebytecount + 4) +\n                 (uint)CARRY4(nread,(uint)*pcVar4);\n        _Var9 = (data->req).upload_chunky;\n        *(int *)&(data->req).writebytecount = iVar24;\n        *(int *)((int)&(data->req).writebytecount + 4) = iVar20;\n        if (((_Var9 == false) || ((data->req).forbidchunk != false)) &&\n           (iVar20 == *(int *)((int)&(data->state).infilesize + 4) &&\n            iVar24 == (int)(data->state).infilesize)) {\n          (data->req).upload_done = true;\n          Curl_infof(data,"We are completely uploaded and fine\n");\n        }\n        iVar24 = (data->req).upload_present;\n        if (iVar24 == nread) {\n          CVar12 = Curl_get_upload_buffer(data);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          pcVar17 = (data->state).ulbuf;\n          (data->req).upload_present = 0;\n          (data->req).upload_fromhere = pcVar17;\n          if ((data->req).upload_done != false) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            Curl_http2_done_sending(conn);\n            if (((conn->bits).rewindaftersend != false) &&\n               (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n          }\n        }\n        else {\n          ppcVar1 = &(data->req).upload_fromhere;\n          *ppcVar1 = *ppcVar1 + nread;\n          (data->req).upload_present = iVar24 - nread;\n        }\n        Curl_pgrsSetUploadCounter(data,(data->req).writebytecount);\n      }\nLAB_00039c0b:\n      Curl_now();\n      (data->req).now.tv_sec = local_34;\n      (data->req).now.tv_usec = iStack_30;\n      goto LAB_00039ecb;\n    }\n    Curl_now();\n    (data->req).now.tv_sec = local_34;\n    (data->req).now.tv_usec = iStack_30;\nLAB_00039c5c:\n    if (((data->req).exp100 == EXP100_AWAITING_CONTINUE) &&\n       (tVar16 = Curl_timediff((data->req).now,(data->req).start100),\n       (data->set).expect_100_timeout <= tVar16)) {\n      piVar2 = &(data->req).keepon;\n      *piVar2 = *piVar2 | 2;\n      (data->req).exp100 = EXP100_SEND_DATA;\n      Curl_expire_done(data,EXPIRE_100_TIMEOUT);\n      Curl_infof(data,"Done waiting for 100-continue\n");\n    }\nLAB_00039c69:\n    iVar24 = Curl_pgrsUpdate(conn);\n  }\n  else {\n    readmore = false;\n    local_6c = 0;\n    *done = false;\n    local_60 = 100;\n    *comeback = false;\n    local_40 = 0;\n    do {\n      uVar14 = (data->set).buffer_size;\n      if (((conn->handler->protocol & 3) == 0) || (conn->httpversion != 0x14)) {\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        uVar26 = (uint)(data->req).size;\n        if (((uVar15 & uVar26) != 0xffffffff) &&\n           (((data->req).header == false &&\n            (pcVar4 = &(data->req).bytecount, uVar11 = uVar26 - (int)*pcVar4,\n            (int)((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4)) < (int)(uint)(uVar11 < uVar14))))) {\n          uVar14 = uVar11;\n        }\n      }\n      if (uVar14 != 0) {\n        CVar12 = Curl_read(conn,conn->sockfd,(data->req).buf,uVar14,&nread);\n        if (CVar12 != CURLE_AGAIN) {\n          if (CVar12 == CURLE_OK) {\n            if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0)\n               && (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n                   (int)(data->req).writebytecount == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        local_5c = local_6c;\n        uVar14 = (data->req).keepon;\nLAB_0003a00e:\n        if (local_60 != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      nread = 0;\n      if (*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) {\n        if (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n            (int)(data->req).writebytecount == 0) {\nLAB_00039f9b:\n          Curl_pgrsTime(data,TIMER_STARTTRANSFER);\n          if ((data->req).exp100 != EXP100_SEND_DATA) {\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n          }\n        }\nLAB_000399eb:\n        if (nread == 0) goto LAB_00039f28;\n        if (nread < 1) goto LAB_0003a030;\n        local_6c = 0;\n        iVar24 = nread;\n      }\n      else {\nLAB_00039f28:\n        if ((data->req).bodywrites != 0) {\nLAB_0003a030:\n          uVar14 = (data->req).keepon & 0xfffffffe;\n          (data->req).keepon = uVar14;\n          goto LAB_0003a00e;\n        }\n        iVar24 = 0;\n        local_6c = local_5c;\n      }\n      (data->req).buf[iVar24] = '\0';\n      (data->req).str = (data->req).buf;\n      p_Var13 = conn->handler->readwrite;\n      if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0) {\n        CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n        if (CVar12 == CURLE_OK) {\n          if (readmore == false) goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = (data->req).keepon;\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if ((data->req).header != false) {\n        stop_reading = false;\n        CVar12 = Curl_http_readwrite_headers(data,conn,&nread,&stop_reading);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        p_Var13 = conn->handler->readwrite;\n        if (((p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n            && ((int)(uint)((int)(data->req).maxdownload != 0) <=\n                -*(int *)((int)&(data->req).maxdownload + 4))) && (0 < nread)) {\n          CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          if (readmore != false) goto LAB_0003a008;\n        }\n        if (stop_reading == false) {\n          if (((data->req).str != (char *)0x0) && ((data->req).header == false)) goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < nread) {\n          _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n          if (_Var9) {\n            Curl_infof(data,"Rewinding stream by : %zd bytes on url %s (zero-length body)\n",nread,\n                       (data->state).up.path);\n            (conn->bits).stream_was_rewound = true;\n            conn->read_pos = conn->read_pos - nread;\n          }\n          else {\n            Curl_infof(data,\n                       "Excess found in a non pipelined read: excess = %zd url = %s (zero-length body)\n"\n                       ,nread,(data->state).up.path);\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if ((data->req).str == (char *)0x0) {\nLAB_00039df2:\n        pCVar22 = conn->handler;\nLAB_00039df8:\n        p_Var13 = pCVar22->readwrite;\n        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0) {\nLAB_00039dff:\n          if ((local_40 != 0) && ((conn->bits).stream_was_rewound == false)) {\n            pcVar17 = (data->req).buf + (data->set).buffer_size;\n            pcVar23 = (data->req).str + nread;\n            (data->req).str = pcVar23;\n            nread = (int)pcVar17 - (int)pcVar23;\n            if (pcVar23 + local_40 <= pcVar17) {\n              nread = local_40;\n            }\n            CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n            if (CVar12 == CURLE_OK) {\n              uVar14 = (data->req).keepon;\n              if (readmore != false) {\n                uVar14 = uVar14 | 1;\n                (data->req).keepon = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = (data->req).keepon;\n        if (local_6c != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          (data->req).keepon = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < nread) || (local_6c != 0)) {\n          if ((data->set).opt_no_body != false) {\n            CVar12 = CURLE_WEIRD_SERVER_REPLY;\n            Curl_conncontrol(conn,2);\n            *done = true;\n            goto LAB_00039d70;\n          }\n          iVar24 = (data->req).bodywrites;\n          if (local_6c == 0 && iVar24 == 0) {\n            if ((conn->handler->protocol & 0x40003) == 0) {\n              iVar24 = 0;\n            }\n            else {\n              if ((data->req).newurl != (char *)0x0) {\n                if ((conn->bits).close != false) {\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }\n                (data->req).ignorebody = true;\n                Curl_infof(data,"Ignoring the response-body\n");\n              }\n              iVar24 = *(int *)((int)&(data->state).resume_from + 4);\n              iVar20 = (int)(data->state).resume_from;\n              if ((((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false)) {\n                if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)) {\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }\n                else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }\n                goto LAB_00039d70;\n              }\n              if ((((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)) &&\n                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)) {\n                *done = true;\n                (data->info).httpcode = 0x130;\n                Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);\n                Curl_conncontrol(conn,1);\n                goto LAB_00039e7c;\n              }\n              iVar24 = (data->req).bodywrites;\n            }\n          }\n          _Var9 = (data->set).verbose;\n          (data->req).bodywrites = iVar24 + 1;\n          if (_Var9 == false) {\nLAB_0003a05d:\n            if ((data->req).chunk != false) {\nLAB_0003a280:\n              code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread);\n              if (CHUNKE_OK < code) {\n                if (code == CHUNKE_WRITE_ERROR) {\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }\n                else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }\n                goto LAB_00039d70;\n              }\n              if (code == CHUNKE_STOP) {\n                sVar18 = (conn->chunk).dataleft;\n                piVar2 = &(data->req).keepon;\n                *piVar2 = *piVar2 & 0xfffffffe;\n                if (sVar18 != 0) {\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }\n              }\n            }\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n            if (((data->req).badheader == CURLDIGESTALGO_MD5SESS) &&\n               ((data->req).ignorebody == false)) {\n              uVar14 = (data->req).hbuflen;\n              bVar25 = CARRY4(local_54,uVar14);\n              local_54 = local_54 + uVar14;\n              local_50 = local_50 + (uint)bVar25;\n              *(uint *)&(data->req).bytecount = local_54;\n              *(int *)((int)&(data->req).bytecount + 4) = local_50;\n            }\n          }\n          else {\n            if (((data->req).badheader == CURLDIGESTALGO_MD5) ||\n               (Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),\n               (data->req).badheader == CURLDIGESTALGO_MD5SESS)) {\n              Curl_debug(data,CURLINFO_DATA_IN,(data->req).str,nread);\n              goto LAB_0003a05d;\n            }\n            if ((data->req).chunk != false) goto LAB_0003a280;\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n          }\n          uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n          local_4c = (uint)(data->req).maxdownload;\n          uVar15 = nread + local_54;\n          local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n          if (((uVar14 & local_4c) != 0xffffffff) &&\n             ((SBORROW4(local_48,uVar14) != SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c)))\n              == (int)((local_48 - uVar14) - (uint)(uVar15 < local_4c)) < 0)) {\n            iVar24 = nread + local_54;\n            local_40 = iVar24 - local_4c;\n            if ((local_40 != 0) && ((data->req).ignorebody == false)) {\n              _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n              if (_Var9) {\n                Curl_infof(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread);\n                (conn->bits).stream_was_rewound = true;\n                conn->read_pos = conn->read_pos + (local_4c - iVar24);\n              }\n              else {\n                Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4));\n              }\n              local_4c = (uint)(data->req).maxdownload;\n              local_50 = *(int *)((int)&(data->req).bytecount + 4);\n              local_54 = (uint)(data->req).bytecount;\n            }\n            nread = local_4c - local_54;\n            if (nread < 0) {\n              nread = 0;\n              local_4c = local_54;\n              local_48 = local_50;\n            }\n            else {\n              local_4c = nread + local_54;\n              local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n            }\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffe;\n            uVar15 = local_4c;\n          }\n          local_4c = uVar15;\n          *(uint *)&(data->req).bytecount = local_4c;\n          *(int *)((int)&(data->req).bytecount + 4) = local_48;\n          Curl_pgrsSetDownloadCounter(data,CONCAT44(local_48,local_4c));\n          if ((data->req).chunk != false) goto LAB_00039df2;\n          aVar21 = (data->req).badheader;\n          if ((nread == 0 && aVar21 == CURLDIGESTALGO_MD5) && local_6c == 0) goto LAB_0003a318;\n          cVar10 = (data->req).ignorebody;\n          if (aVar21 == CURLDIGESTALGO_MD5) {\nLAB_0003a358:\n            if (((conn->data->set).http_ce_skip == false) &&\n               (writer = (data->req).writer_stack, writer != (contenc_writer *)0x0)) {\n              if (cVar10 == '\0') {\n                CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            pCVar22 = conn->handler;\n            if (cVar10 == '\0') {\n              pcVar17 = (data->req).str;\n              if ((pCVar22->protocol & 0xc000) == 0) {\n                CVar12 = Curl_client_write(conn,1,pcVar17,nread);\n              }\n              else {\n                CVar12 = Curl_pop3_write(conn,pcVar17,nread);\n              }\nLAB_0003a392:\n              (data->req).badheader = CURLDIGESTALGO_MD5;\n              if (CVar12 == CURLE_OK) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if ((_Bool)cVar10 == false) {\n              uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n              uVar15 = (uint)(data->req).maxdownload;\n              uVar26 = (data->req).hbuflen;\n              if (((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26)))\n              {\n                uVar26 = uVar15;\n              }\n              CVar12 = Curl_client_write(conn,1,(data->state).headerbuff,uVar26);\n              if (CVar12 != CURLE_OK) goto LAB_00039d70;\n              aVar21 = (data->req).badheader;\n            }\n            if ((uint)aVar21 < 2) {\n              cVar10 = (data->req).ignorebody;\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            pCVar22 = conn->handler;\n          }\n          (data->req).badheader = CURLDIGESTALGO_MD5;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        pCVar22 = conn->handler;\n        p_Var13 = pCVar22->readwrite;\n        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n        goto LAB_00039dff;\n        uVar14 = (data->req).keepon;\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((((pCVar22->protocol & 0x30) == 0) && (_Var9 = Curl_ssl_data_pending(conn,0), !_Var9)) &&\n         (((conn->handler->protocol & 3) == 0 || (conn->httpversion != 0x14)))) goto LAB_0003a008;\n      local_60 = local_60 + -1;\n      local_6c = local_5c;\n    } while (local_60 != -1);\n    uVar14 = (data->req).keepon;\nLAB_00039e5f:\n    conn->cselect_bits = 1;\n    *comeback = true;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && ((conn->bits).close != false)) {\n      Curl_infof(data,"we are done reading and this is set to close, stop send\n");\n      piVar2 = &(data->req).keepon;\n      *piVar2 = *piVar2 & 0xfffffffd;\n      if (*done != false) {\nLAB_0003a468:\n        CVar12 = CURLE_OK;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (*done != false) goto LAB_0003a468;\n      if ((((data->req).keepon & 2) != 0) && (((uint)local_74 & 2) != 0)) goto LAB_00039b2b;\n    }\nLAB_00039ea1:\n    Curl_now();\n    (data->req).now.tv_sec = local_34;\n    (data->req).now.tv_usec = iStack_30;\n    if (local_5c == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    pcVar4 = (data->req).bytecountp;\n    if (pcVar4 != (curl_off_t *)0x0) {\n      uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4);\n      *(int *)pcVar4 = (int)(data->req).bytecount;\n      *(undefined4 *)((int)pcVar4 + 4) = uVar5;\n    }\n    pcVar4 = (data->req).writebytecountp;\n    if (pcVar4 == (curl_off_t *)0x0) goto LAB_00039c69;\n    uVar5 = *(undefined4 *)((int)&(data->req).writebytecount + 4);\n    *(int *)pcVar4 = (int)(data->req).writebytecount;\n    *(undefined4 *)((int)pcVar4 + 4) = uVar5;\n    iVar24 = Curl_pgrsUpdate(conn);\n  }\n  if (iVar24 == 0) {\n    iVar24 = (data->req).now.tv_usec;\n    CVar12 = Curl_speedcheck(data,(data->req).now);\n    if (CVar12 != CURLE_OK) goto LAB_00039d70;\n    if ((data->req).keepon == 0) {\n      if ((data->set).opt_no_body == false) {\n        uVar14 = (uint)(data->req).size;\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        if ((uVar15 & uVar14) == 0xffffffff) {\nLAB_0003a470:\n          if (((data->req).chunk == false) || ((conn->chunk).state == CHUNK_STOP))\n          goto LAB_0003a483;\n          pcVar17 = "transfer closed with outstanding read data remaining";\n        }\n        else {\n          uVar26 = *(uint *)((int)&(data->req).bytecount + 4);\n          uVar11 = (uint)(data->req).bytecount;\n          if (((uVar26 == uVar15 && uVar14 == uVar11) ||\n              (pcVar4 = &(data->state).crlf_conversions,\n              uVar26 == uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +\n                        (uint)CARRY4(uVar14,(uint)*pcVar4) && uVar11 == uVar14 + (int)*pcVar4)) ||\n             ((data->req).newurl != (char *)0x0)) goto LAB_0003a470;\n          iVar24 = uVar14 - uVar11;\n          pcVar17 = "transfer closed with %lld bytes remaining to read";\n        }\n        CVar12 = CURLE_PARTIAL_FILE;\n        Curl_failf(data,pcVar17,iVar24);\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      iVar24 = Curl_pgrsUpdate(conn);\n      if (iVar24 != 0) goto LAB_00039f19;\n    }\n    else {\n      tVar16 = Curl_timeleft(data,&(data->req).now,false);\n      if (tVar16 < 0) {\n        uVar14 = (uint)(data->req).size;\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        cVar7 = (data->req).bytecount;\n        uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4);\n        if ((uVar14 & uVar15) == 0xffffffff) {\n          pcVar3 = &(data->progress).t_startsingle;\n          uVar15 = pcVar3->tv_sec;\n          uVar14 = (data->req).now.tv_usec;\n          tVar16 = Curl_timediff((data->req).now,*pcVar3);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld bytes received";\n        }\n        else {\n          tVar16 = Curl_timediff((data->req).now,(data->progress).t_startsingle);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld out of %lld bytes received"\n          ;\n        }\n        CVar12 = CURLE_OPERATION_TIMEDOUT;\n        Curl_failf(data,pcVar17,tVar16,(int)cVar7,uVar5,uVar14,uVar15);\n        goto LAB_00039d70;\n      }\n    }\n    *done = ((data->req).keepon & 0x33) == 0;\n  }\n  else {\nLAB_00039f19:\n    CVar12 = CURLE_ABORTED_BY_CALLBACK;\n  }\nLAB_00039d70:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return CVar12;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "char **ppcVar1;" primitive_type (pointer_declarator "**ppcVar1" * (pointer_declarator "*ppcVar1" * identifier)) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "curltime *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "curl_off_t *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "contenc_writer *writer;" type_identifier (pointer_declarator "*writer" * identifier) ;) (declaration "void *pvVar6;" primitive_type (pointer_declarator "*pvVar6" * identifier) ;) (declaration "curl_off_t cVar7;" type_identifier identifier ;) (declaration "ssize_t sVar8;" primitive_type identifier ;) (declaration "_Bool _Var9;" type_identifier identifier ;) (declaration "char cVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "CURLcode CVar12;" type_identifier identifier ;) (declaration "_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *p_Var13;" type_identifier (pointer_declarator "*p_Var13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "CHUNKcode code;" type_identifier identifier ;) (declaration "timediff_t tVar16;" type_identifier identifier ;) (declaration "char *pcVar17;" primitive_type (pointer_declarator "*pcVar17" * identifier) ;) (declaration "curl_socket_t writefd;" type_identifier identifier ;) (declaration "size_t sVar18;" primitive_type identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "curl_socket_t readfd0;" type_identifier identifier ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "anon_enum_32 aVar21;" type_identifier identifier ;) (declaration "Curl_handler *pCVar22;" type_identifier (pointer_declarator "*pCVar22" * identifier) ;) (declaration "char *pcVar23;" primitive_type (pointer_declarator "*pcVar23" * identifier) ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar25;" primitive_type identifier ;) (declaration "uint uVar26;" type_identifier identifier ;) (declaration "ssize_t *local_74;" primitive_type (pointer_declarator "*local_74" * identifier) ;) (declaration "uint local_6c;" type_identifier identifier ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "time_t local_34;" type_identifier identifier ;) (declaration "int iStack_30;" primitive_type identifier ;) (declaration "_Bool readmore;" type_identifier identifier ;) (declaration "_Bool stop_reading;" type_identifier identifier ;) (declaration "ssize_t nread;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "readfd0 = -1;" (assignment_expression "readfd0 = -1" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x3986e;" (assignment_expression "uStack_14 = 0x3986e" identifier = number_literal) ;) (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_74 = (ssize_t *)conn->cselect_bits;" (assignment_expression "local_74 = (ssize_t *)conn->cselect_bits" identifier = (cast_expression "(ssize_t *)conn->cselect_bits" ( (type_descriptor "ssize_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "conn->cselect_bits" identifier -> field_identifier))) ;) (expression_statement "conn->cselect_bits = 0;" (assignment_expression "conn->cselect_bits = 0" (field_expression "conn->cselect_bits" identifier -> field_identifier) = number_literal) ;) (expression_statement "uVar14 = (data->req).keepon;" (assignment_expression "uVar14 = (data->req).keepon" identifier = (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((uVar14 & 0x15) == 1) {\n    readfd0 = conn->sockfd;\n  }" if (parenthesized_expression "((uVar14 & 0x15) == 1)" ( (binary_expression "(uVar14 & 0x15) == 1" (parenthesized_expression "(uVar14 & 0x15)" ( (binary_expression "uVar14 & 0x15" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    readfd0 = conn->sockfd;\n  }" { (expression_statement "readfd0 = conn->sockfd;" (assignment_expression "readfd0 = conn->sockfd" identifier = (field_expression "conn->sockfd" identifier -> field_identifier)) ;) })) (expression_statement "writefd = -1;" (assignment_expression "writefd = -1" identifier = number_literal) ;) (if_statement "if ((uVar14 & 0x2a) == 2) {\n    writefd = conn->writesockfd;\n  }" if (parenthesized_expression "((uVar14 & 0x2a) == 2)" ( (binary_expression "(uVar14 & 0x2a) == 2" (parenthesized_expression "(uVar14 & 0x2a)" ( (binary_expression "uVar14 & 0x2a" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    writefd = conn->writesockfd;\n  }" { (expression_statement "writefd = conn->writesockfd;" (assignment_expression "writefd = conn->writesockfd" identifier = (field_expression "conn->writesockfd" identifier -> field_identifier)) ;) })) (if_statement "if ((conn->data->state).drain == 0) {\n    if (local_74 == (ssize_t *)0x0) {\n      local_74 = (ssize_t *)Curl_socket_check(readfd0,-1,writefd,0);\n    }\n  }\n  else {\n    local_74 = (ssize_t *)((uint)local_74 | 1);\n  }" if (parenthesized_expression "((conn->data->state).drain == 0)" ( (binary_expression "(conn->data->state).drain == 0" (field_expression "(conn->data->state).drain" (parenthesized_expression "(conn->data->state)" ( (field_expression "conn->data->state" (field_expression "conn->data" identifier -> field_identifier) -> field_identifier) )) . field_identifier) == number_literal) )) (compound_statement "{\n    if (local_74 == (ssize_t *)0x0) {\n      local_74 = (ssize_t *)Curl_socket_check(readfd0,-1,writefd,0);\n    }\n  }" { (if_statement "if (local_74 == (ssize_t *)0x0) {\n      local_74 = (ssize_t *)Curl_socket_check(readfd0,-1,writefd,0);\n    }" if (parenthesized_expression "(local_74 == (ssize_t *)0x0)" ( (binary_expression "local_74 == (ssize_t *)0x0" identifier == (cast_expression "(ssize_t *)0x0" ( (type_descriptor "ssize_t *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      local_74 = (ssize_t *)Curl_socket_check(readfd0,-1,writefd,0);\n    }" { (expression_statement "local_74 = (ssize_t *)Curl_socket_check(readfd0,-1,writefd,0);" (assignment_expression "local_74 = (ssize_t *)Curl_socket_check(readfd0,-1,writefd,0)" identifier = (cast_expression "(ssize_t *)Curl_socket_check(readfd0,-1,writefd,0)" ( (type_descriptor "ssize_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "Curl_socket_check(readfd0,-1,writefd,0)" identifier (argument_list "(readfd0,-1,writefd,0)" ( identifier , number_literal , identifier , number_literal ))))) ;) })) }) (else_clause "else {\n    local_74 = (ssize_t *)((uint)local_74 | 1);\n  }" else (compound_statement "{\n    local_74 = (ssize_t *)((uint)local_74 | 1);\n  }" { (expression_statement "local_74 = (ssize_t *)((uint)local_74 | 1);" (assignment_expression "local_74 = (ssize_t *)((uint)local_74 | 1)" identifier = (cast_expression "(ssize_t *)((uint)local_74 | 1)" ( (type_descriptor "ssize_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)local_74 | 1)" ( (binary_expression "(uint)local_74 | 1" (cast_expression "(uint)local_74" ( (type_descriptor "uint" type_identifier) ) identifier) | number_literal) )))) ;) }))) (if_statement "if (local_74 == (ssize_t *)0x4) {\n    CVar12 = CURLE_SEND_ERROR;\n    Curl_failf(data,"select/poll returned error");\n    goto LAB_00039d70;\n  }" if (parenthesized_expression "(local_74 == (ssize_t *)0x4)" ( (binary_expression "local_74 == (ssize_t *)0x4" identifier == (cast_expression "(ssize_t *)0x4" ( (type_descriptor "ssize_t *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    CVar12 = CURLE_SEND_ERROR;\n    Curl_failf(data,"select/poll returned error");\n    goto LAB_00039d70;\n  }" { (expression_statement "CVar12 = CURLE_SEND_ERROR;" (assignment_expression "CVar12 = CURLE_SEND_ERROR" identifier = identifier) ;) (expression_statement "Curl_failf(data,"select/poll returned error");" (call_expression "Curl_failf(data,"select/poll returned error")" identifier (argument_list "(data,"select/poll returned error")" ( identifier , (string_literal ""select/poll returned error"" " string_content ") ))) ;) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (expression_statement "uVar14 = (data->req).keepon;" (assignment_expression "uVar14 = (data->req).keepon" identifier = (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "local_5c = uVar14 & 1;" (assignment_expression "local_5c = uVar14 & 1" identifier = (binary_expression "uVar14 & 1" identifier & number_literal)) ;) (if_statement "if ((local_5c == 0) || ((((uint)local_74 & 1) == 0 && ((conn->bits).stream_was_rewound == false)))\n     ) {\n    if (((uVar14 & 2) != 0) && (local_5c = 0, ((uint)local_74 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) &&\n         (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n          (int)(data->req).writebytecount == 0)) {\n        Curl_pgrsTime(data,TIMER_STARTTRANSFER);\n      }\n      sVar18 = (data->req).upload_present;\n      if (sVar18 == 0) {\n        CVar12 = Curl_get_upload_buffer(data);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        (data->req).upload_fromhere = (data->state).ulbuf;\n        if ((data->req).upload_done == false) {\n          pvVar6 = (data->req).protop;\n          if (((data->req).exp100 == EXP100_SENDING_REQUEST) && (*(int *)((int)pvVar6 + 0x1a0) == 2)\n             ) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            (data->req).exp100 = EXP100_AWAITING_CONTINUE;\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n            Curl_expire(data,(data->set).expect_100_timeout,EXPIRE_100_TIMEOUT);\n            goto LAB_00039ea1;\n          }\n          bVar25 = false;\n          if ((conn->handler->protocol & 0x40003) != 0) {\n            bVar25 = *(int *)((int)pvVar6 + 0x1a0) == 1;\n          }\n          CVar12 = Curl_fillreadbuffer(conn,(data->set).upload_buffer_size,(size_t *)&nread);\n          sVar8 = nread;\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          local_6c = nread;\n          if (nread == 0) goto LAB_0003a898;\n          if (0 < nread) {\n            (data->req).upload_present = nread;\n            if ((!bVar25) && (((data->set).prefer_ascii != false || ((data->set).crlf != false)))) {\n              pcVar17 = (data->state).scratch;\n              if (pcVar17 == (char *)0x0) {\n                pcVar17 = (char *)(*Curl_cmalloc)((data->set).upload_buffer_size * 2);\n                (data->state).scratch = pcVar17;\n                if (pcVar17 == (char *)0x0) {\n                  CVar12 = CURLE_OUT_OF_MEMORY;\n                  Curl_failf(data,"Failed to alloc scratch buffer!",conn,conn);\n                  goto LAB_00039d70;\n                }\n              }\n              iVar20 = 0;\n              iVar24 = 0;\n              while( true ) {\n                iVar19 = iVar24 + 1;\n                cVar10 = (data->req).upload_fromhere[iVar20];\n                if (cVar10 == '\n') {\n                  pcVar17[iVar24] = '\r';\n                  (data->state).scratch[iVar24 + 1] = '\n';\n                  iVar19 = iVar24 + 2;\n                  if ((data->set).crlf == false) {\n                    uVar14 = *(uint *)((int)&(data->state).infilesize + 4);\n                    uVar15 = (uint)(data->state).infilesize;\n                    if ((uVar14 & uVar15) != 0xffffffff) {\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }\n                  }\n                }\n                else {\n                  pcVar17[iVar24] = cVar10;\n                }\n                iVar20 = iVar20 + 1;\n                if (sVar8 == iVar20) break;\n                pcVar17 = (data->state).scratch;\n                iVar24 = iVar19;\n              }\n              if (sVar8 != iVar19) {\n                pcVar17 = (data->state).scratch;\n                (data->req).upload_present = iVar19;\n                (data->req).upload_fromhere = pcVar17;\n                local_6c = iVar19;\n              }\n            }\n            if (((conn->handler->protocol & 0x30000) != 0) &&\n               (CVar12 = Curl_smtp_escape_eob(conn,local_6c), CVar12 != CURLE_OK))\n            goto LAB_00039d70;\n            sVar18 = (data->req).upload_present;\n            goto LAB_00039b53;\n          }\n          uVar14 = (data->req).keepon;\n        }\n        else {\nLAB_0003a898:\n          uVar14 = (data->req).keepon;\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        (data->req).keepon = uVar14 & 0xfffffffd;\n        Curl_http2_done_sending(conn);\n        if (((conn->bits).rewindaftersend != false) &&\n           (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n      }\n      else {\nLAB_00039b53:\n        local_74 = &nread;\n        CVar12 = Curl_write(conn,conn->writesockfd,(data->req).upload_fromhere,sVar18,local_74);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        if ((data->set).verbose != false) {\n          Curl_debug(data,CURLINFO_DATA_OUT,(data->req).upload_fromhere,nread);\n        }\n        pcVar4 = &(data->req).writebytecount;\n        iVar24 = nread + (int)*pcVar4;\n        iVar20 = (nread >> 0x1f) + *(int *)((int)&(data->req).writebytecount + 4) +\n                 (uint)CARRY4(nread,(uint)*pcVar4);\n        _Var9 = (data->req).upload_chunky;\n        *(int *)&(data->req).writebytecount = iVar24;\n        *(int *)((int)&(data->req).writebytecount + 4) = iVar20;\n        if (((_Var9 == false) || ((data->req).forbidchunk != false)) &&\n           (iVar20 == *(int *)((int)&(data->state).infilesize + 4) &&\n            iVar24 == (int)(data->state).infilesize)) {\n          (data->req).upload_done = true;\n          Curl_infof(data,"We are completely uploaded and fine\n");\n        }\n        iVar24 = (data->req).upload_present;\n        if (iVar24 == nread) {\n          CVar12 = Curl_get_upload_buffer(data);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          pcVar17 = (data->state).ulbuf;\n          (data->req).upload_present = 0;\n          (data->req).upload_fromhere = pcVar17;\n          if ((data->req).upload_done != false) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            Curl_http2_done_sending(conn);\n            if (((conn->bits).rewindaftersend != false) &&\n               (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n          }\n        }\n        else {\n          ppcVar1 = &(data->req).upload_fromhere;\n          *ppcVar1 = *ppcVar1 + nread;\n          (data->req).upload_present = iVar24 - nread;\n        }\n        Curl_pgrsSetUploadCounter(data,(data->req).writebytecount);\n      }\nLAB_00039c0b:\n      Curl_now();\n      (data->req).now.tv_sec = local_34;\n      (data->req).now.tv_usec = iStack_30;\n      goto LAB_00039ecb;\n    }\n    Curl_now();\n    (data->req).now.tv_sec = local_34;\n    (data->req).now.tv_usec = iStack_30;\nLAB_00039c5c:\n    if (((data->req).exp100 == EXP100_AWAITING_CONTINUE) &&\n       (tVar16 = Curl_timediff((data->req).now,(data->req).start100),\n       (data->set).expect_100_timeout <= tVar16)) {\n      piVar2 = &(data->req).keepon;\n      *piVar2 = *piVar2 | 2;\n      (data->req).exp100 = EXP100_SEND_DATA;\n      Curl_expire_done(data,EXPIRE_100_TIMEOUT);\n      Curl_infof(data,"Done waiting for 100-continue\n");\n    }\nLAB_00039c69:\n    iVar24 = Curl_pgrsUpdate(conn);\n  }\n  else {\n    readmore = false;\n    local_6c = 0;\n    *done = false;\n    local_60 = 100;\n    *comeback = false;\n    local_40 = 0;\n    do {\n      uVar14 = (data->set).buffer_size;\n      if (((conn->handler->protocol & 3) == 0) || (conn->httpversion != 0x14)) {\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        uVar26 = (uint)(data->req).size;\n        if (((uVar15 & uVar26) != 0xffffffff) &&\n           (((data->req).header == false &&\n            (pcVar4 = &(data->req).bytecount, uVar11 = uVar26 - (int)*pcVar4,\n            (int)((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4)) < (int)(uint)(uVar11 < uVar14))))) {\n          uVar14 = uVar11;\n        }\n      }\n      if (uVar14 != 0) {\n        CVar12 = Curl_read(conn,conn->sockfd,(data->req).buf,uVar14,&nread);\n        if (CVar12 != CURLE_AGAIN) {\n          if (CVar12 == CURLE_OK) {\n            if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0)\n               && (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n                   (int)(data->req).writebytecount == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        local_5c = local_6c;\n        uVar14 = (data->req).keepon;\nLAB_0003a00e:\n        if (local_60 != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      nread = 0;\n      if (*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) {\n        if (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n            (int)(data->req).writebytecount == 0) {\nLAB_00039f9b:\n          Curl_pgrsTime(data,TIMER_STARTTRANSFER);\n          if ((data->req).exp100 != EXP100_SEND_DATA) {\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n          }\n        }\nLAB_000399eb:\n        if (nread == 0) goto LAB_00039f28;\n        if (nread < 1) goto LAB_0003a030;\n        local_6c = 0;\n        iVar24 = nread;\n      }\n      else {\nLAB_00039f28:\n        if ((data->req).bodywrites != 0) {\nLAB_0003a030:\n          uVar14 = (data->req).keepon & 0xfffffffe;\n          (data->req).keepon = uVar14;\n          goto LAB_0003a00e;\n        }\n        iVar24 = 0;\n        local_6c = local_5c;\n      }\n      (data->req).buf[iVar24] = '\0';\n      (data->req).str = (data->req).buf;\n      p_Var13 = conn->handler->readwrite;\n      if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0) {\n        CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n        if (CVar12 == CURLE_OK) {\n          if (readmore == false) goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = (data->req).keepon;\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if ((data->req).header != false) {\n        stop_reading = false;\n        CVar12 = Curl_http_readwrite_headers(data,conn,&nread,&stop_reading);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        p_Var13 = conn->handler->readwrite;\n        if (((p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n            && ((int)(uint)((int)(data->req).maxdownload != 0) <=\n                -*(int *)((int)&(data->req).maxdownload + 4))) && (0 < nread)) {\n          CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          if (readmore != false) goto LAB_0003a008;\n        }\n        if (stop_reading == false) {\n          if (((data->req).str != (char *)0x0) && ((data->req).header == false)) goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < nread) {\n          _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n          if (_Var9) {\n            Curl_infof(data,"Rewinding stream by : %zd bytes on url %s (zero-length body)\n",nread,\n                       (data->state).up.path);\n            (conn->bits).stream_was_rewound = true;\n            conn->read_pos = conn->read_pos - nread;\n          }\n          else {\n            Curl_infof(data,\n                       "Excess found in a non pipelined read: excess = %zd url = %s (zero-length body)\n"\n                       ,nread,(data->state).up.path);\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if ((data->req).str == (char *)0x0) {\nLAB_00039df2:\n        pCVar22 = conn->handler;\nLAB_00039df8:\n        p_Var13 = pCVar22->readwrite;\n        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0) {\nLAB_00039dff:\n          if ((local_40 != 0) && ((conn->bits).stream_was_rewound == false)) {\n            pcVar17 = (data->req).buf + (data->set).buffer_size;\n            pcVar23 = (data->req).str + nread;\n            (data->req).str = pcVar23;\n            nread = (int)pcVar17 - (int)pcVar23;\n            if (pcVar23 + local_40 <= pcVar17) {\n              nread = local_40;\n            }\n            CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n            if (CVar12 == CURLE_OK) {\n              uVar14 = (data->req).keepon;\n              if (readmore != false) {\n                uVar14 = uVar14 | 1;\n                (data->req).keepon = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = (data->req).keepon;\n        if (local_6c != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          (data->req).keepon = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < nread) || (local_6c != 0)) {\n          if ((data->set).opt_no_body != false) {\n            CVar12 = CURLE_WEIRD_SERVER_REPLY;\n            Curl_conncontrol(conn,2);\n            *done = true;\n            goto LAB_00039d70;\n          }\n          iVar24 = (data->req).bodywrites;\n          if (local_6c == 0 && iVar24 == 0) {\n            if ((conn->handler->protocol & 0x40003) == 0) {\n              iVar24 = 0;\n            }\n            else {\n              if ((data->req).newurl != (char *)0x0) {\n                if ((conn->bits).close != false) {\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }\n                (data->req).ignorebody = true;\n                Curl_infof(data,"Ignoring the response-body\n");\n              }\n              iVar24 = *(int *)((int)&(data->state).resume_from + 4);\n              iVar20 = (int)(data->state).resume_from;\n              if ((((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false)) {\n                if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)) {\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }\n                else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }\n                goto LAB_00039d70;\n              }\n              if ((((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)) &&\n                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)) {\n                *done = true;\n                (data->info).httpcode = 0x130;\n                Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);\n                Curl_conncontrol(conn,1);\n                goto LAB_00039e7c;\n              }\n              iVar24 = (data->req).bodywrites;\n            }\n          }\n          _Var9 = (data->set).verbose;\n          (data->req).bodywrites = iVar24 + 1;\n          if (_Var9 == false) {\nLAB_0003a05d:\n            if ((data->req).chunk != false) {\nLAB_0003a280:\n              code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread);\n              if (CHUNKE_OK < code) {\n                if (code == CHUNKE_WRITE_ERROR) {\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }\n                else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }\n                goto LAB_00039d70;\n              }\n              if (code == CHUNKE_STOP) {\n                sVar18 = (conn->chunk).dataleft;\n                piVar2 = &(data->req).keepon;\n                *piVar2 = *piVar2 & 0xfffffffe;\n                if (sVar18 != 0) {\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }\n              }\n            }\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n            if (((data->req).badheader == CURLDIGESTALGO_MD5SESS) &&\n               ((data->req).ignorebody == false)) {\n              uVar14 = (data->req).hbuflen;\n              bVar25 = CARRY4(local_54,uVar14);\n              local_54 = local_54 + uVar14;\n              local_50 = local_50 + (uint)bVar25;\n              *(uint *)&(data->req).bytecount = local_54;\n              *(int *)((int)&(data->req).bytecount + 4) = local_50;\n            }\n          }\n          else {\n            if (((data->req).badheader == CURLDIGESTALGO_MD5) ||\n               (Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),\n               (data->req).badheader == CURLDIGESTALGO_MD5SESS)) {\n              Curl_debug(data,CURLINFO_DATA_IN,(data->req).str,nread);\n              goto LAB_0003a05d;\n            }\n            if ((data->req).chunk != false) goto LAB_0003a280;\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n          }\n          uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n          local_4c = (uint)(data->req).maxdownload;\n          uVar15 = nread + local_54;\n          local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n          if (((uVar14 & local_4c) != 0xffffffff) &&\n             ((SBORROW4(local_48,uVar14) != SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c)))\n              == (int)((local_48 - uVar14) - (uint)(uVar15 < local_4c)) < 0)) {\n            iVar24 = nread + local_54;\n            local_40 = iVar24 - local_4c;\n            if ((local_40 != 0) && ((data->req).ignorebody == false)) {\n              _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n              if (_Var9) {\n                Curl_infof(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread);\n                (conn->bits).stream_was_rewound = true;\n                conn->read_pos = conn->read_pos + (local_4c - iVar24);\n              }\n              else {\n                Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4));\n              }\n              local_4c = (uint)(data->req).maxdownload;\n              local_50 = *(int *)((int)&(data->req).bytecount + 4);\n              local_54 = (uint)(data->req).bytecount;\n            }\n            nread = local_4c - local_54;\n            if (nread < 0) {\n              nread = 0;\n              local_4c = local_54;\n              local_48 = local_50;\n            }\n            else {\n              local_4c = nread + local_54;\n              local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n            }\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffe;\n            uVar15 = local_4c;\n          }\n          local_4c = uVar15;\n          *(uint *)&(data->req).bytecount = local_4c;\n          *(int *)((int)&(data->req).bytecount + 4) = local_48;\n          Curl_pgrsSetDownloadCounter(data,CONCAT44(local_48,local_4c));\n          if ((data->req).chunk != false) goto LAB_00039df2;\n          aVar21 = (data->req).badheader;\n          if ((nread == 0 && aVar21 == CURLDIGESTALGO_MD5) && local_6c == 0) goto LAB_0003a318;\n          cVar10 = (data->req).ignorebody;\n          if (aVar21 == CURLDIGESTALGO_MD5) {\nLAB_0003a358:\n            if (((conn->data->set).http_ce_skip == false) &&\n               (writer = (data->req).writer_stack, writer != (contenc_writer *)0x0)) {\n              if (cVar10 == '\0') {\n                CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            pCVar22 = conn->handler;\n            if (cVar10 == '\0') {\n              pcVar17 = (data->req).str;\n              if ((pCVar22->protocol & 0xc000) == 0) {\n                CVar12 = Curl_client_write(conn,1,pcVar17,nread);\n              }\n              else {\n                CVar12 = Curl_pop3_write(conn,pcVar17,nread);\n              }\nLAB_0003a392:\n              (data->req).badheader = CURLDIGESTALGO_MD5;\n              if (CVar12 == CURLE_OK) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if ((_Bool)cVar10 == false) {\n              uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n              uVar15 = (uint)(data->req).maxdownload;\n              uVar26 = (data->req).hbuflen;\n              if (((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26)))\n              {\n                uVar26 = uVar15;\n              }\n              CVar12 = Curl_client_write(conn,1,(data->state).headerbuff,uVar26);\n              if (CVar12 != CURLE_OK) goto LAB_00039d70;\n              aVar21 = (data->req).badheader;\n            }\n            if ((uint)aVar21 < 2) {\n              cVar10 = (data->req).ignorebody;\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            pCVar22 = conn->handler;\n          }\n          (data->req).badheader = CURLDIGESTALGO_MD5;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        pCVar22 = conn->handler;\n        p_Var13 = pCVar22->readwrite;\n        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n        goto LAB_00039dff;\n        uVar14 = (data->req).keepon;\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((((pCVar22->protocol & 0x30) == 0) && (_Var9 = Curl_ssl_data_pending(conn,0), !_Var9)) &&\n         (((conn->handler->protocol & 3) == 0 || (conn->httpversion != 0x14)))) goto LAB_0003a008;\n      local_60 = local_60 + -1;\n      local_6c = local_5c;\n    } while (local_60 != -1);\n    uVar14 = (data->req).keepon;\nLAB_00039e5f:\n    conn->cselect_bits = 1;\n    *comeback = true;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && ((conn->bits).close != false)) {\n      Curl_infof(data,"we are done reading and this is set to close, stop send\n");\n      piVar2 = &(data->req).keepon;\n      *piVar2 = *piVar2 & 0xfffffffd;\n      if (*done != false) {\nLAB_0003a468:\n        CVar12 = CURLE_OK;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (*done != false) goto LAB_0003a468;\n      if ((((data->req).keepon & 2) != 0) && (((uint)local_74 & 2) != 0)) goto LAB_00039b2b;\n    }\nLAB_00039ea1:\n    Curl_now();\n    (data->req).now.tv_sec = local_34;\n    (data->req).now.tv_usec = iStack_30;\n    if (local_5c == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    pcVar4 = (data->req).bytecountp;\n    if (pcVar4 != (curl_off_t *)0x0) {\n      uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4);\n      *(int *)pcVar4 = (int)(data->req).bytecount;\n      *(undefined4 *)((int)pcVar4 + 4) = uVar5;\n    }\n    pcVar4 = (data->req).writebytecountp;\n    if (pcVar4 == (curl_off_t *)0x0) goto LAB_00039c69;\n    uVar5 = *(undefined4 *)((int)&(data->req).writebytecount + 4);\n    *(int *)pcVar4 = (int)(data->req).writebytecount;\n    *(undefined4 *)((int)pcVar4 + 4) = uVar5;\n    iVar24 = Curl_pgrsUpdate(conn);\n  }" if (parenthesized_expression "((local_5c == 0) || ((((uint)local_74 & 1) == 0 && ((conn->bits).stream_was_rewound == false)))\n     )" ( (binary_expression "(local_5c == 0) || ((((uint)local_74 & 1) == 0 && ((conn->bits).stream_was_rewound == false)))" (parenthesized_expression "(local_5c == 0)" ( (binary_expression "local_5c == 0" identifier == number_literal) )) || (parenthesized_expression "((((uint)local_74 & 1) == 0 && ((conn->bits).stream_was_rewound == false)))" ( (parenthesized_expression "(((uint)local_74 & 1) == 0 && ((conn->bits).stream_was_rewound == false))" ( (binary_expression "((uint)local_74 & 1) == 0 && ((conn->bits).stream_was_rewound == false)" (binary_expression "((uint)local_74 & 1) == 0" (parenthesized_expression "((uint)local_74 & 1)" ( (binary_expression "(uint)local_74 & 1" (cast_expression "(uint)local_74" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) && (parenthesized_expression "((conn->bits).stream_was_rewound == false)" ( (binary_expression "(conn->bits).stream_was_rewound == false" (field_expression "(conn->bits).stream_was_rewound" (parenthesized_expression "(conn->bits)" ( (field_expression "conn->bits" identifier -> field_identifier) )) . field_identifier) == false) ))) )) ))) )) (compound_statement "{\n    if (((uVar14 & 2) != 0) && (local_5c = 0, ((uint)local_74 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) &&\n         (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n          (int)(data->req).writebytecount == 0)) {\n        Curl_pgrsTime(data,TIMER_STARTTRANSFER);\n      }\n      sVar18 = (data->req).upload_present;\n      if (sVar18 == 0) {\n        CVar12 = Curl_get_upload_buffer(data);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        (data->req).upload_fromhere = (data->state).ulbuf;\n        if ((data->req).upload_done == false) {\n          pvVar6 = (data->req).protop;\n          if (((data->req).exp100 == EXP100_SENDING_REQUEST) && (*(int *)((int)pvVar6 + 0x1a0) == 2)\n             ) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            (data->req).exp100 = EXP100_AWAITING_CONTINUE;\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n            Curl_expire(data,(data->set).expect_100_timeout,EXPIRE_100_TIMEOUT);\n            goto LAB_00039ea1;\n          }\n          bVar25 = false;\n          if ((conn->handler->protocol & 0x40003) != 0) {\n            bVar25 = *(int *)((int)pvVar6 + 0x1a0) == 1;\n          }\n          CVar12 = Curl_fillreadbuffer(conn,(data->set).upload_buffer_size,(size_t *)&nread);\n          sVar8 = nread;\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          local_6c = nread;\n          if (nread == 0) goto LAB_0003a898;\n          if (0 < nread) {\n            (data->req).upload_present = nread;\n            if ((!bVar25) && (((data->set).prefer_ascii != false || ((data->set).crlf != false)))) {\n              pcVar17 = (data->state).scratch;\n              if (pcVar17 == (char *)0x0) {\n                pcVar17 = (char *)(*Curl_cmalloc)((data->set).upload_buffer_size * 2);\n                (data->state).scratch = pcVar17;\n                if (pcVar17 == (char *)0x0) {\n                  CVar12 = CURLE_OUT_OF_MEMORY;\n                  Curl_failf(data,"Failed to alloc scratch buffer!",conn,conn);\n                  goto LAB_00039d70;\n                }\n              }\n              iVar20 = 0;\n              iVar24 = 0;\n              while( true ) {\n                iVar19 = iVar24 + 1;\n                cVar10 = (data->req).upload_fromhere[iVar20];\n                if (cVar10 == '\n') {\n                  pcVar17[iVar24] = '\r';\n                  (data->state).scratch[iVar24 + 1] = '\n';\n                  iVar19 = iVar24 + 2;\n                  if ((data->set).crlf == false) {\n                    uVar14 = *(uint *)((int)&(data->state).infilesize + 4);\n                    uVar15 = (uint)(data->state).infilesize;\n                    if ((uVar14 & uVar15) != 0xffffffff) {\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }\n                  }\n                }\n                else {\n                  pcVar17[iVar24] = cVar10;\n                }\n                iVar20 = iVar20 + 1;\n                if (sVar8 == iVar20) break;\n                pcVar17 = (data->state).scratch;\n                iVar24 = iVar19;\n              }\n              if (sVar8 != iVar19) {\n                pcVar17 = (data->state).scratch;\n                (data->req).upload_present = iVar19;\n                (data->req).upload_fromhere = pcVar17;\n                local_6c = iVar19;\n              }\n            }\n            if (((conn->handler->protocol & 0x30000) != 0) &&\n               (CVar12 = Curl_smtp_escape_eob(conn,local_6c), CVar12 != CURLE_OK))\n            goto LAB_00039d70;\n            sVar18 = (data->req).upload_present;\n            goto LAB_00039b53;\n          }\n          uVar14 = (data->req).keepon;\n        }\n        else {\nLAB_0003a898:\n          uVar14 = (data->req).keepon;\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        (data->req).keepon = uVar14 & 0xfffffffd;\n        Curl_http2_done_sending(conn);\n        if (((conn->bits).rewindaftersend != false) &&\n           (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n      }\n      else {\nLAB_00039b53:\n        local_74 = &nread;\n        CVar12 = Curl_write(conn,conn->writesockfd,(data->req).upload_fromhere,sVar18,local_74);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        if ((data->set).verbose != false) {\n          Curl_debug(data,CURLINFO_DATA_OUT,(data->req).upload_fromhere,nread);\n        }\n        pcVar4 = &(data->req).writebytecount;\n        iVar24 = nread + (int)*pcVar4;\n        iVar20 = (nread >> 0x1f) + *(int *)((int)&(data->req).writebytecount + 4) +\n                 (uint)CARRY4(nread,(uint)*pcVar4);\n        _Var9 = (data->req).upload_chunky;\n        *(int *)&(data->req).writebytecount = iVar24;\n        *(int *)((int)&(data->req).writebytecount + 4) = iVar20;\n        if (((_Var9 == false) || ((data->req).forbidchunk != false)) &&\n           (iVar20 == *(int *)((int)&(data->state).infilesize + 4) &&\n            iVar24 == (int)(data->state).infilesize)) {\n          (data->req).upload_done = true;\n          Curl_infof(data,"We are completely uploaded and fine\n");\n        }\n        iVar24 = (data->req).upload_present;\n        if (iVar24 == nread) {\n          CVar12 = Curl_get_upload_buffer(data);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          pcVar17 = (data->state).ulbuf;\n          (data->req).upload_present = 0;\n          (data->req).upload_fromhere = pcVar17;\n          if ((data->req).upload_done != false) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            Curl_http2_done_sending(conn);\n            if (((conn->bits).rewindaftersend != false) &&\n               (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n          }\n        }\n        else {\n          ppcVar1 = &(data->req).upload_fromhere;\n          *ppcVar1 = *ppcVar1 + nread;\n          (data->req).upload_present = iVar24 - nread;\n        }\n        Curl_pgrsSetUploadCounter(data,(data->req).writebytecount);\n      }\nLAB_00039c0b:\n      Curl_now();\n      (data->req).now.tv_sec = local_34;\n      (data->req).now.tv_usec = iStack_30;\n      goto LAB_00039ecb;\n    }\n    Curl_now();\n    (data->req).now.tv_sec = local_34;\n    (data->req).now.tv_usec = iStack_30;\nLAB_00039c5c:\n    if (((data->req).exp100 == EXP100_AWAITING_CONTINUE) &&\n       (tVar16 = Curl_timediff((data->req).now,(data->req).start100),\n       (data->set).expect_100_timeout <= tVar16)) {\n      piVar2 = &(data->req).keepon;\n      *piVar2 = *piVar2 | 2;\n      (data->req).exp100 = EXP100_SEND_DATA;\n      Curl_expire_done(data,EXPIRE_100_TIMEOUT);\n      Curl_infof(data,"Done waiting for 100-continue\n");\n    }\nLAB_00039c69:\n    iVar24 = Curl_pgrsUpdate(conn);\n  }" { (if_statement "if (((uVar14 & 2) != 0) && (local_5c = 0, ((uint)local_74 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) &&\n         (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n          (int)(data->req).writebytecount == 0)) {\n        Curl_pgrsTime(data,TIMER_STARTTRANSFER);\n      }\n      sVar18 = (data->req).upload_present;\n      if (sVar18 == 0) {\n        CVar12 = Curl_get_upload_buffer(data);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        (data->req).upload_fromhere = (data->state).ulbuf;\n        if ((data->req).upload_done == false) {\n          pvVar6 = (data->req).protop;\n          if (((data->req).exp100 == EXP100_SENDING_REQUEST) && (*(int *)((int)pvVar6 + 0x1a0) == 2)\n             ) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            (data->req).exp100 = EXP100_AWAITING_CONTINUE;\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n            Curl_expire(data,(data->set).expect_100_timeout,EXPIRE_100_TIMEOUT);\n            goto LAB_00039ea1;\n          }\n          bVar25 = false;\n          if ((conn->handler->protocol & 0x40003) != 0) {\n            bVar25 = *(int *)((int)pvVar6 + 0x1a0) == 1;\n          }\n          CVar12 = Curl_fillreadbuffer(conn,(data->set).upload_buffer_size,(size_t *)&nread);\n          sVar8 = nread;\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          local_6c = nread;\n          if (nread == 0) goto LAB_0003a898;\n          if (0 < nread) {\n            (data->req).upload_present = nread;\n            if ((!bVar25) && (((data->set).prefer_ascii != false || ((data->set).crlf != false)))) {\n              pcVar17 = (data->state).scratch;\n              if (pcVar17 == (char *)0x0) {\n                pcVar17 = (char *)(*Curl_cmalloc)((data->set).upload_buffer_size * 2);\n                (data->state).scratch = pcVar17;\n                if (pcVar17 == (char *)0x0) {\n                  CVar12 = CURLE_OUT_OF_MEMORY;\n                  Curl_failf(data,"Failed to alloc scratch buffer!",conn,conn);\n                  goto LAB_00039d70;\n                }\n              }\n              iVar20 = 0;\n              iVar24 = 0;\n              while( true ) {\n                iVar19 = iVar24 + 1;\n                cVar10 = (data->req).upload_fromhere[iVar20];\n                if (cVar10 == '\n') {\n                  pcVar17[iVar24] = '\r';\n                  (data->state).scratch[iVar24 + 1] = '\n';\n                  iVar19 = iVar24 + 2;\n                  if ((data->set).crlf == false) {\n                    uVar14 = *(uint *)((int)&(data->state).infilesize + 4);\n                    uVar15 = (uint)(data->state).infilesize;\n                    if ((uVar14 & uVar15) != 0xffffffff) {\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }\n                  }\n                }\n                else {\n                  pcVar17[iVar24] = cVar10;\n                }\n                iVar20 = iVar20 + 1;\n                if (sVar8 == iVar20) break;\n                pcVar17 = (data->state).scratch;\n                iVar24 = iVar19;\n              }\n              if (sVar8 != iVar19) {\n                pcVar17 = (data->state).scratch;\n                (data->req).upload_present = iVar19;\n                (data->req).upload_fromhere = pcVar17;\n                local_6c = iVar19;\n              }\n            }\n            if (((conn->handler->protocol & 0x30000) != 0) &&\n               (CVar12 = Curl_smtp_escape_eob(conn,local_6c), CVar12 != CURLE_OK))\n            goto LAB_00039d70;\n            sVar18 = (data->req).upload_present;\n            goto LAB_00039b53;\n          }\n          uVar14 = (data->req).keepon;\n        }\n        else {\nLAB_0003a898:\n          uVar14 = (data->req).keepon;\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        (data->req).keepon = uVar14 & 0xfffffffd;\n        Curl_http2_done_sending(conn);\n        if (((conn->bits).rewindaftersend != false) &&\n           (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n      }\n      else {\nLAB_00039b53:\n        local_74 = &nread;\n        CVar12 = Curl_write(conn,conn->writesockfd,(data->req).upload_fromhere,sVar18,local_74);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        if ((data->set).verbose != false) {\n          Curl_debug(data,CURLINFO_DATA_OUT,(data->req).upload_fromhere,nread);\n        }\n        pcVar4 = &(data->req).writebytecount;\n        iVar24 = nread + (int)*pcVar4;\n        iVar20 = (nread >> 0x1f) + *(int *)((int)&(data->req).writebytecount + 4) +\n                 (uint)CARRY4(nread,(uint)*pcVar4);\n        _Var9 = (data->req).upload_chunky;\n        *(int *)&(data->req).writebytecount = iVar24;\n        *(int *)((int)&(data->req).writebytecount + 4) = iVar20;\n        if (((_Var9 == false) || ((data->req).forbidchunk != false)) &&\n           (iVar20 == *(int *)((int)&(data->state).infilesize + 4) &&\n            iVar24 == (int)(data->state).infilesize)) {\n          (data->req).upload_done = true;\n          Curl_infof(data,"We are completely uploaded and fine\n");\n        }\n        iVar24 = (data->req).upload_present;\n        if (iVar24 == nread) {\n          CVar12 = Curl_get_upload_buffer(data);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          pcVar17 = (data->state).ulbuf;\n          (data->req).upload_present = 0;\n          (data->req).upload_fromhere = pcVar17;\n          if ((data->req).upload_done != false) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            Curl_http2_done_sending(conn);\n            if (((conn->bits).rewindaftersend != false) &&\n               (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n          }\n        }\n        else {\n          ppcVar1 = &(data->req).upload_fromhere;\n          *ppcVar1 = *ppcVar1 + nread;\n          (data->req).upload_present = iVar24 - nread;\n        }\n        Curl_pgrsSetUploadCounter(data,(data->req).writebytecount);\n      }\nLAB_00039c0b:\n      Curl_now();\n      (data->req).now.tv_sec = local_34;\n      (data->req).now.tv_usec = iStack_30;\n      goto LAB_00039ecb;\n    }" if (parenthesized_expression "(((uVar14 & 2) != 0) && (local_5c = 0, ((uint)local_74 & 2) != 0))" ( (binary_expression "((uVar14 & 2) != 0) && (local_5c = 0, ((uint)local_74 & 2) != 0)" (parenthesized_expression "((uVar14 & 2) != 0)" ( (binary_expression "(uVar14 & 2) != 0" (parenthesized_expression "(uVar14 & 2)" ( (binary_expression "uVar14 & 2" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(local_5c = 0, ((uint)local_74 & 2) != 0)" ( (comma_expression "local_5c = 0, ((uint)local_74 & 2) != 0" (assignment_expression "local_5c = 0" identifier = number_literal) , (binary_expression "((uint)local_74 & 2) != 0" (parenthesized_expression "((uint)local_74 & 2)" ( (binary_expression "(uint)local_74 & 2" (cast_expression "(uint)local_74" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\nLAB_00039b2b:\n      if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) &&\n         (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n          (int)(data->req).writebytecount == 0)) {\n        Curl_pgrsTime(data,TIMER_STARTTRANSFER);\n      }\n      sVar18 = (data->req).upload_present;\n      if (sVar18 == 0) {\n        CVar12 = Curl_get_upload_buffer(data);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        (data->req).upload_fromhere = (data->state).ulbuf;\n        if ((data->req).upload_done == false) {\n          pvVar6 = (data->req).protop;\n          if (((data->req).exp100 == EXP100_SENDING_REQUEST) && (*(int *)((int)pvVar6 + 0x1a0) == 2)\n             ) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            (data->req).exp100 = EXP100_AWAITING_CONTINUE;\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n            Curl_expire(data,(data->set).expect_100_timeout,EXPIRE_100_TIMEOUT);\n            goto LAB_00039ea1;\n          }\n          bVar25 = false;\n          if ((conn->handler->protocol & 0x40003) != 0) {\n            bVar25 = *(int *)((int)pvVar6 + 0x1a0) == 1;\n          }\n          CVar12 = Curl_fillreadbuffer(conn,(data->set).upload_buffer_size,(size_t *)&nread);\n          sVar8 = nread;\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          local_6c = nread;\n          if (nread == 0) goto LAB_0003a898;\n          if (0 < nread) {\n            (data->req).upload_present = nread;\n            if ((!bVar25) && (((data->set).prefer_ascii != false || ((data->set).crlf != false)))) {\n              pcVar17 = (data->state).scratch;\n              if (pcVar17 == (char *)0x0) {\n                pcVar17 = (char *)(*Curl_cmalloc)((data->set).upload_buffer_size * 2);\n                (data->state).scratch = pcVar17;\n                if (pcVar17 == (char *)0x0) {\n                  CVar12 = CURLE_OUT_OF_MEMORY;\n                  Curl_failf(data,"Failed to alloc scratch buffer!",conn,conn);\n                  goto LAB_00039d70;\n                }\n              }\n              iVar20 = 0;\n              iVar24 = 0;\n              while( true ) {\n                iVar19 = iVar24 + 1;\n                cVar10 = (data->req).upload_fromhere[iVar20];\n                if (cVar10 == '\n') {\n                  pcVar17[iVar24] = '\r';\n                  (data->state).scratch[iVar24 + 1] = '\n';\n                  iVar19 = iVar24 + 2;\n                  if ((data->set).crlf == false) {\n                    uVar14 = *(uint *)((int)&(data->state).infilesize + 4);\n                    uVar15 = (uint)(data->state).infilesize;\n                    if ((uVar14 & uVar15) != 0xffffffff) {\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }\n                  }\n                }\n                else {\n                  pcVar17[iVar24] = cVar10;\n                }\n                iVar20 = iVar20 + 1;\n                if (sVar8 == iVar20) break;\n                pcVar17 = (data->state).scratch;\n                iVar24 = iVar19;\n              }\n              if (sVar8 != iVar19) {\n                pcVar17 = (data->state).scratch;\n                (data->req).upload_present = iVar19;\n                (data->req).upload_fromhere = pcVar17;\n                local_6c = iVar19;\n              }\n            }\n            if (((conn->handler->protocol & 0x30000) != 0) &&\n               (CVar12 = Curl_smtp_escape_eob(conn,local_6c), CVar12 != CURLE_OK))\n            goto LAB_00039d70;\n            sVar18 = (data->req).upload_present;\n            goto LAB_00039b53;\n          }\n          uVar14 = (data->req).keepon;\n        }\n        else {\nLAB_0003a898:\n          uVar14 = (data->req).keepon;\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        (data->req).keepon = uVar14 & 0xfffffffd;\n        Curl_http2_done_sending(conn);\n        if (((conn->bits).rewindaftersend != false) &&\n           (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n      }\n      else {\nLAB_00039b53:\n        local_74 = &nread;\n        CVar12 = Curl_write(conn,conn->writesockfd,(data->req).upload_fromhere,sVar18,local_74);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        if ((data->set).verbose != false) {\n          Curl_debug(data,CURLINFO_DATA_OUT,(data->req).upload_fromhere,nread);\n        }\n        pcVar4 = &(data->req).writebytecount;\n        iVar24 = nread + (int)*pcVar4;\n        iVar20 = (nread >> 0x1f) + *(int *)((int)&(data->req).writebytecount + 4) +\n                 (uint)CARRY4(nread,(uint)*pcVar4);\n        _Var9 = (data->req).upload_chunky;\n        *(int *)&(data->req).writebytecount = iVar24;\n        *(int *)((int)&(data->req).writebytecount + 4) = iVar20;\n        if (((_Var9 == false) || ((data->req).forbidchunk != false)) &&\n           (iVar20 == *(int *)((int)&(data->state).infilesize + 4) &&\n            iVar24 == (int)(data->state).infilesize)) {\n          (data->req).upload_done = true;\n          Curl_infof(data,"We are completely uploaded and fine\n");\n        }\n        iVar24 = (data->req).upload_present;\n        if (iVar24 == nread) {\n          CVar12 = Curl_get_upload_buffer(data);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          pcVar17 = (data->state).ulbuf;\n          (data->req).upload_present = 0;\n          (data->req).upload_fromhere = pcVar17;\n          if ((data->req).upload_done != false) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            Curl_http2_done_sending(conn);\n            if (((conn->bits).rewindaftersend != false) &&\n               (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n          }\n        }\n        else {\n          ppcVar1 = &(data->req).upload_fromhere;\n          *ppcVar1 = *ppcVar1 + nread;\n          (data->req).upload_present = iVar24 - nread;\n        }\n        Curl_pgrsSetUploadCounter(data,(data->req).writebytecount);\n      }\nLAB_00039c0b:\n      Curl_now();\n      (data->req).now.tv_sec = local_34;\n      (data->req).now.tv_usec = iStack_30;\n      goto LAB_00039ecb;\n    }" { (labeled_statement "LAB_00039b2b:\n      if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) &&\n         (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n          (int)(data->req).writebytecount == 0)) {\n        Curl_pgrsTime(data,TIMER_STARTTRANSFER);\n      }" statement_identifier : (if_statement "if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) &&\n         (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n          (int)(data->req).writebytecount == 0)) {\n        Curl_pgrsTime(data,TIMER_STARTTRANSFER);\n      }" if (parenthesized_expression "((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) &&\n         (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n          (int)(data->req).writebytecount == 0))" ( (binary_expression "(*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) &&\n         (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n          (int)(data->req).writebytecount == 0)" (parenthesized_expression "(*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0)" ( (binary_expression "*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0" (binary_expression "*(int *)((int)&(data->req).bytecount + 4) == 0" (pointer_expression "*(int *)((int)&(data->req).bytecount + 4)" * (cast_expression "(int *)((int)&(data->req).bytecount + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).bytecount + 4)" ( (binary_expression "(int)&(data->req).bytecount + 4" (cast_expression "(int)&(data->req).bytecount" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).bytecount" & (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) == number_literal) && (binary_expression "(int)(data->req).bytecount == 0" (cast_expression "(int)(data->req).bytecount" ( (type_descriptor "int" primitive_type) ) (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) == number_literal)) )) && (parenthesized_expression "(*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n          (int)(data->req).writebytecount == 0)" ( (binary_expression "*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n          (int)(data->req).writebytecount == 0" (binary_expression "*(int *)((int)&(data->req).writebytecount + 4) == 0" (pointer_expression "*(int *)((int)&(data->req).writebytecount + 4)" * (cast_expression "(int *)((int)&(data->req).writebytecount + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).writebytecount + 4)" ( (binary_expression "(int)&(data->req).writebytecount + 4" (cast_expression "(int)&(data->req).writebytecount" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).writebytecount" & (field_expression "(data->req).writebytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) == number_literal) && (binary_expression "(int)(data->req).writebytecount == 0" (cast_expression "(int)(data->req).writebytecount" ( (type_descriptor "int" primitive_type) ) (field_expression "(data->req).writebytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) == number_literal)) ))) )) (compound_statement "{\n        Curl_pgrsTime(data,TIMER_STARTTRANSFER);\n      }" { (expression_statement "Curl_pgrsTime(data,TIMER_STARTTRANSFER);" (call_expression "Curl_pgrsTime(data,TIMER_STARTTRANSFER)" identifier (argument_list "(data,TIMER_STARTTRANSFER)" ( identifier , identifier ))) ;) }))) (expression_statement "sVar18 = (data->req).upload_present;" (assignment_expression "sVar18 = (data->req).upload_present" identifier = (field_expression "(data->req).upload_present" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (sVar18 == 0) {\n        CVar12 = Curl_get_upload_buffer(data);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        (data->req).upload_fromhere = (data->state).ulbuf;\n        if ((data->req).upload_done == false) {\n          pvVar6 = (data->req).protop;\n          if (((data->req).exp100 == EXP100_SENDING_REQUEST) && (*(int *)((int)pvVar6 + 0x1a0) == 2)\n             ) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            (data->req).exp100 = EXP100_AWAITING_CONTINUE;\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n            Curl_expire(data,(data->set).expect_100_timeout,EXPIRE_100_TIMEOUT);\n            goto LAB_00039ea1;\n          }\n          bVar25 = false;\n          if ((conn->handler->protocol & 0x40003) != 0) {\n            bVar25 = *(int *)((int)pvVar6 + 0x1a0) == 1;\n          }\n          CVar12 = Curl_fillreadbuffer(conn,(data->set).upload_buffer_size,(size_t *)&nread);\n          sVar8 = nread;\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          local_6c = nread;\n          if (nread == 0) goto LAB_0003a898;\n          if (0 < nread) {\n            (data->req).upload_present = nread;\n            if ((!bVar25) && (((data->set).prefer_ascii != false || ((data->set).crlf != false)))) {\n              pcVar17 = (data->state).scratch;\n              if (pcVar17 == (char *)0x0) {\n                pcVar17 = (char *)(*Curl_cmalloc)((data->set).upload_buffer_size * 2);\n                (data->state).scratch = pcVar17;\n                if (pcVar17 == (char *)0x0) {\n                  CVar12 = CURLE_OUT_OF_MEMORY;\n                  Curl_failf(data,"Failed to alloc scratch buffer!",conn,conn);\n                  goto LAB_00039d70;\n                }\n              }\n              iVar20 = 0;\n              iVar24 = 0;\n              while( true ) {\n                iVar19 = iVar24 + 1;\n                cVar10 = (data->req).upload_fromhere[iVar20];\n                if (cVar10 == '\n') {\n                  pcVar17[iVar24] = '\r';\n                  (data->state).scratch[iVar24 + 1] = '\n';\n                  iVar19 = iVar24 + 2;\n                  if ((data->set).crlf == false) {\n                    uVar14 = *(uint *)((int)&(data->state).infilesize + 4);\n                    uVar15 = (uint)(data->state).infilesize;\n                    if ((uVar14 & uVar15) != 0xffffffff) {\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }\n                  }\n                }\n                else {\n                  pcVar17[iVar24] = cVar10;\n                }\n                iVar20 = iVar20 + 1;\n                if (sVar8 == iVar20) break;\n                pcVar17 = (data->state).scratch;\n                iVar24 = iVar19;\n              }\n              if (sVar8 != iVar19) {\n                pcVar17 = (data->state).scratch;\n                (data->req).upload_present = iVar19;\n                (data->req).upload_fromhere = pcVar17;\n                local_6c = iVar19;\n              }\n            }\n            if (((conn->handler->protocol & 0x30000) != 0) &&\n               (CVar12 = Curl_smtp_escape_eob(conn,local_6c), CVar12 != CURLE_OK))\n            goto LAB_00039d70;\n            sVar18 = (data->req).upload_present;\n            goto LAB_00039b53;\n          }\n          uVar14 = (data->req).keepon;\n        }\n        else {\nLAB_0003a898:\n          uVar14 = (data->req).keepon;\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        (data->req).keepon = uVar14 & 0xfffffffd;\n        Curl_http2_done_sending(conn);\n        if (((conn->bits).rewindaftersend != false) &&\n           (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n      }\n      else {\nLAB_00039b53:\n        local_74 = &nread;\n        CVar12 = Curl_write(conn,conn->writesockfd,(data->req).upload_fromhere,sVar18,local_74);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        if ((data->set).verbose != false) {\n          Curl_debug(data,CURLINFO_DATA_OUT,(data->req).upload_fromhere,nread);\n        }\n        pcVar4 = &(data->req).writebytecount;\n        iVar24 = nread + (int)*pcVar4;\n        iVar20 = (nread >> 0x1f) + *(int *)((int)&(data->req).writebytecount + 4) +\n                 (uint)CARRY4(nread,(uint)*pcVar4);\n        _Var9 = (data->req).upload_chunky;\n        *(int *)&(data->req).writebytecount = iVar24;\n        *(int *)((int)&(data->req).writebytecount + 4) = iVar20;\n        if (((_Var9 == false) || ((data->req).forbidchunk != false)) &&\n           (iVar20 == *(int *)((int)&(data->state).infilesize + 4) &&\n            iVar24 == (int)(data->state).infilesize)) {\n          (data->req).upload_done = true;\n          Curl_infof(data,"We are completely uploaded and fine\n");\n        }\n        iVar24 = (data->req).upload_present;\n        if (iVar24 == nread) {\n          CVar12 = Curl_get_upload_buffer(data);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          pcVar17 = (data->state).ulbuf;\n          (data->req).upload_present = 0;\n          (data->req).upload_fromhere = pcVar17;\n          if ((data->req).upload_done != false) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            Curl_http2_done_sending(conn);\n            if (((conn->bits).rewindaftersend != false) &&\n               (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n          }\n        }\n        else {\n          ppcVar1 = &(data->req).upload_fromhere;\n          *ppcVar1 = *ppcVar1 + nread;\n          (data->req).upload_present = iVar24 - nread;\n        }\n        Curl_pgrsSetUploadCounter(data,(data->req).writebytecount);\n      }" if (parenthesized_expression "(sVar18 == 0)" ( (binary_expression "sVar18 == 0" identifier == number_literal) )) (compound_statement "{\n        CVar12 = Curl_get_upload_buffer(data);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        (data->req).upload_fromhere = (data->state).ulbuf;\n        if ((data->req).upload_done == false) {\n          pvVar6 = (data->req).protop;\n          if (((data->req).exp100 == EXP100_SENDING_REQUEST) && (*(int *)((int)pvVar6 + 0x1a0) == 2)\n             ) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            (data->req).exp100 = EXP100_AWAITING_CONTINUE;\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n            Curl_expire(data,(data->set).expect_100_timeout,EXPIRE_100_TIMEOUT);\n            goto LAB_00039ea1;\n          }\n          bVar25 = false;\n          if ((conn->handler->protocol & 0x40003) != 0) {\n            bVar25 = *(int *)((int)pvVar6 + 0x1a0) == 1;\n          }\n          CVar12 = Curl_fillreadbuffer(conn,(data->set).upload_buffer_size,(size_t *)&nread);\n          sVar8 = nread;\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          local_6c = nread;\n          if (nread == 0) goto LAB_0003a898;\n          if (0 < nread) {\n            (data->req).upload_present = nread;\n            if ((!bVar25) && (((data->set).prefer_ascii != false || ((data->set).crlf != false)))) {\n              pcVar17 = (data->state).scratch;\n              if (pcVar17 == (char *)0x0) {\n                pcVar17 = (char *)(*Curl_cmalloc)((data->set).upload_buffer_size * 2);\n                (data->state).scratch = pcVar17;\n                if (pcVar17 == (char *)0x0) {\n                  CVar12 = CURLE_OUT_OF_MEMORY;\n                  Curl_failf(data,"Failed to alloc scratch buffer!",conn,conn);\n                  goto LAB_00039d70;\n                }\n              }\n              iVar20 = 0;\n              iVar24 = 0;\n              while( true ) {\n                iVar19 = iVar24 + 1;\n                cVar10 = (data->req).upload_fromhere[iVar20];\n                if (cVar10 == '\n') {\n                  pcVar17[iVar24] = '\r';\n                  (data->state).scratch[iVar24 + 1] = '\n';\n                  iVar19 = iVar24 + 2;\n                  if ((data->set).crlf == false) {\n                    uVar14 = *(uint *)((int)&(data->state).infilesize + 4);\n                    uVar15 = (uint)(data->state).infilesize;\n                    if ((uVar14 & uVar15) != 0xffffffff) {\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }\n                  }\n                }\n                else {\n                  pcVar17[iVar24] = cVar10;\n                }\n                iVar20 = iVar20 + 1;\n                if (sVar8 == iVar20) break;\n                pcVar17 = (data->state).scratch;\n                iVar24 = iVar19;\n              }\n              if (sVar8 != iVar19) {\n                pcVar17 = (data->state).scratch;\n                (data->req).upload_present = iVar19;\n                (data->req).upload_fromhere = pcVar17;\n                local_6c = iVar19;\n              }\n            }\n            if (((conn->handler->protocol & 0x30000) != 0) &&\n               (CVar12 = Curl_smtp_escape_eob(conn,local_6c), CVar12 != CURLE_OK))\n            goto LAB_00039d70;\n            sVar18 = (data->req).upload_present;\n            goto LAB_00039b53;\n          }\n          uVar14 = (data->req).keepon;\n        }\n        else {\nLAB_0003a898:\n          uVar14 = (data->req).keepon;\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        (data->req).keepon = uVar14 & 0xfffffffd;\n        Curl_http2_done_sending(conn);\n        if (((conn->bits).rewindaftersend != false) &&\n           (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n      }" { (expression_statement "CVar12 = Curl_get_upload_buffer(data);" (assignment_expression "CVar12 = Curl_get_upload_buffer(data)" identifier = (call_expression "Curl_get_upload_buffer(data)" identifier (argument_list "(data)" ( identifier )))) ;) (if_statement "if (CVar12 != CURLE_OK) goto LAB_00039d70;" if (parenthesized_expression "(CVar12 != CURLE_OK)" ( (binary_expression "CVar12 != CURLE_OK" identifier != identifier) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (expression_statement "(data->req).upload_fromhere = (data->state).ulbuf;" (assignment_expression "(data->req).upload_fromhere = (data->state).ulbuf" (field_expression "(data->req).upload_fromhere" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) = (field_expression "(data->state).ulbuf" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((data->req).upload_done == false) {\n          pvVar6 = (data->req).protop;\n          if (((data->req).exp100 == EXP100_SENDING_REQUEST) && (*(int *)((int)pvVar6 + 0x1a0) == 2)\n             ) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            (data->req).exp100 = EXP100_AWAITING_CONTINUE;\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n            Curl_expire(data,(data->set).expect_100_timeout,EXPIRE_100_TIMEOUT);\n            goto LAB_00039ea1;\n          }\n          bVar25 = false;\n          if ((conn->handler->protocol & 0x40003) != 0) {\n            bVar25 = *(int *)((int)pvVar6 + 0x1a0) == 1;\n          }\n          CVar12 = Curl_fillreadbuffer(conn,(data->set).upload_buffer_size,(size_t *)&nread);\n          sVar8 = nread;\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          local_6c = nread;\n          if (nread == 0) goto LAB_0003a898;\n          if (0 < nread) {\n            (data->req).upload_present = nread;\n            if ((!bVar25) && (((data->set).prefer_ascii != false || ((data->set).crlf != false)))) {\n              pcVar17 = (data->state).scratch;\n              if (pcVar17 == (char *)0x0) {\n                pcVar17 = (char *)(*Curl_cmalloc)((data->set).upload_buffer_size * 2);\n                (data->state).scratch = pcVar17;\n                if (pcVar17 == (char *)0x0) {\n                  CVar12 = CURLE_OUT_OF_MEMORY;\n                  Curl_failf(data,"Failed to alloc scratch buffer!",conn,conn);\n                  goto LAB_00039d70;\n                }\n              }\n              iVar20 = 0;\n              iVar24 = 0;\n              while( true ) {\n                iVar19 = iVar24 + 1;\n                cVar10 = (data->req).upload_fromhere[iVar20];\n                if (cVar10 == '\n') {\n                  pcVar17[iVar24] = '\r';\n                  (data->state).scratch[iVar24 + 1] = '\n';\n                  iVar19 = iVar24 + 2;\n                  if ((data->set).crlf == false) {\n                    uVar14 = *(uint *)((int)&(data->state).infilesize + 4);\n                    uVar15 = (uint)(data->state).infilesize;\n                    if ((uVar14 & uVar15) != 0xffffffff) {\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }\n                  }\n                }\n                else {\n                  pcVar17[iVar24] = cVar10;\n                }\n                iVar20 = iVar20 + 1;\n                if (sVar8 == iVar20) break;\n                pcVar17 = (data->state).scratch;\n                iVar24 = iVar19;\n              }\n              if (sVar8 != iVar19) {\n                pcVar17 = (data->state).scratch;\n                (data->req).upload_present = iVar19;\n                (data->req).upload_fromhere = pcVar17;\n                local_6c = iVar19;\n              }\n            }\n            if (((conn->handler->protocol & 0x30000) != 0) &&\n               (CVar12 = Curl_smtp_escape_eob(conn,local_6c), CVar12 != CURLE_OK))\n            goto LAB_00039d70;\n            sVar18 = (data->req).upload_present;\n            goto LAB_00039b53;\n          }\n          uVar14 = (data->req).keepon;\n        }\n        else {\nLAB_0003a898:\n          uVar14 = (data->req).keepon;\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }" if (parenthesized_expression "((data->req).upload_done == false)" ( (binary_expression "(data->req).upload_done == false" (field_expression "(data->req).upload_done" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) == false) )) (compound_statement "{\n          pvVar6 = (data->req).protop;\n          if (((data->req).exp100 == EXP100_SENDING_REQUEST) && (*(int *)((int)pvVar6 + 0x1a0) == 2)\n             ) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            (data->req).exp100 = EXP100_AWAITING_CONTINUE;\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n            Curl_expire(data,(data->set).expect_100_timeout,EXPIRE_100_TIMEOUT);\n            goto LAB_00039ea1;\n          }\n          bVar25 = false;\n          if ((conn->handler->protocol & 0x40003) != 0) {\n            bVar25 = *(int *)((int)pvVar6 + 0x1a0) == 1;\n          }\n          CVar12 = Curl_fillreadbuffer(conn,(data->set).upload_buffer_size,(size_t *)&nread);\n          sVar8 = nread;\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          local_6c = nread;\n          if (nread == 0) goto LAB_0003a898;\n          if (0 < nread) {\n            (data->req).upload_present = nread;\n            if ((!bVar25) && (((data->set).prefer_ascii != false || ((data->set).crlf != false)))) {\n              pcVar17 = (data->state).scratch;\n              if (pcVar17 == (char *)0x0) {\n                pcVar17 = (char *)(*Curl_cmalloc)((data->set).upload_buffer_size * 2);\n                (data->state).scratch = pcVar17;\n                if (pcVar17 == (char *)0x0) {\n                  CVar12 = CURLE_OUT_OF_MEMORY;\n                  Curl_failf(data,"Failed to alloc scratch buffer!",conn,conn);\n                  goto LAB_00039d70;\n                }\n              }\n              iVar20 = 0;\n              iVar24 = 0;\n              while( true ) {\n                iVar19 = iVar24 + 1;\n                cVar10 = (data->req).upload_fromhere[iVar20];\n                if (cVar10 == '\n') {\n                  pcVar17[iVar24] = '\r';\n                  (data->state).scratch[iVar24 + 1] = '\n';\n                  iVar19 = iVar24 + 2;\n                  if ((data->set).crlf == false) {\n                    uVar14 = *(uint *)((int)&(data->state).infilesize + 4);\n                    uVar15 = (uint)(data->state).infilesize;\n                    if ((uVar14 & uVar15) != 0xffffffff) {\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }\n                  }\n                }\n                else {\n                  pcVar17[iVar24] = cVar10;\n                }\n                iVar20 = iVar20 + 1;\n                if (sVar8 == iVar20) break;\n                pcVar17 = (data->state).scratch;\n                iVar24 = iVar19;\n              }\n              if (sVar8 != iVar19) {\n                pcVar17 = (data->state).scratch;\n                (data->req).upload_present = iVar19;\n                (data->req).upload_fromhere = pcVar17;\n                local_6c = iVar19;\n              }\n            }\n            if (((conn->handler->protocol & 0x30000) != 0) &&\n               (CVar12 = Curl_smtp_escape_eob(conn,local_6c), CVar12 != CURLE_OK))\n            goto LAB_00039d70;\n            sVar18 = (data->req).upload_present;\n            goto LAB_00039b53;\n          }\n          uVar14 = (data->req).keepon;\n        }" { (expression_statement "pvVar6 = (data->req).protop;" (assignment_expression "pvVar6 = (data->req).protop" identifier = (field_expression "(data->req).protop" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (((data->req).exp100 == EXP100_SENDING_REQUEST) && (*(int *)((int)pvVar6 + 0x1a0) == 2)\n             ) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            (data->req).exp100 = EXP100_AWAITING_CONTINUE;\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n            Curl_expire(data,(data->set).expect_100_timeout,EXPIRE_100_TIMEOUT);\n            goto LAB_00039ea1;\n          }" if (parenthesized_expression "(((data->req).exp100 == EXP100_SENDING_REQUEST) && (*(int *)((int)pvVar6 + 0x1a0) == 2)\n             )" ( (binary_expression "((data->req).exp100 == EXP100_SENDING_REQUEST) && (*(int *)((int)pvVar6 + 0x1a0) == 2)" (parenthesized_expression "((data->req).exp100 == EXP100_SENDING_REQUEST)" ( (binary_expression "(data->req).exp100 == EXP100_SENDING_REQUEST" (field_expression "(data->req).exp100" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) == identifier) )) && (parenthesized_expression "(*(int *)((int)pvVar6 + 0x1a0) == 2)" ( (binary_expression "*(int *)((int)pvVar6 + 0x1a0) == 2" (pointer_expression "*(int *)((int)pvVar6 + 0x1a0)" * (cast_expression "(int *)((int)pvVar6 + 0x1a0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar6 + 0x1a0)" ( (binary_expression "(int)pvVar6 + 0x1a0" (cast_expression "(int)pvVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            (data->req).exp100 = EXP100_AWAITING_CONTINUE;\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n            Curl_expire(data,(data->set).expect_100_timeout,EXPIRE_100_TIMEOUT);\n            goto LAB_00039ea1;\n          }" { (expression_statement "piVar2 = &(data->req).keepon;" (assignment_expression "piVar2 = &(data->req).keepon" identifier = (pointer_expression "&(data->req).keepon" & (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*piVar2 = *piVar2 & 0xfffffffd;" (assignment_expression "*piVar2 = *piVar2 & 0xfffffffd" (pointer_expression "*piVar2" * identifier) = (binary_expression "*piVar2 & 0xfffffffd" (pointer_expression "*piVar2" * identifier) & number_literal)) ;) (expression_statement "(data->req).exp100 = EXP100_AWAITING_CONTINUE;" (assignment_expression "(data->req).exp100 = EXP100_AWAITING_CONTINUE" (field_expression "(data->req).exp100" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "Curl_now();" (call_expression "Curl_now()" identifier (argument_list "()" ( ))) ;) (expression_statement "(data->req).start100.tv_sec = local_34;" (assignment_expression "(data->req).start100.tv_sec = local_34" (field_expression "(data->req).start100.tv_sec" (field_expression "(data->req).start100" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(data->req).start100.tv_usec = iStack_30;" (assignment_expression "(data->req).start100.tv_usec = iStack_30" (field_expression "(data->req).start100.tv_usec" (field_expression "(data->req).start100" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "Curl_expire(data,(data->set).expect_100_timeout,EXPIRE_100_TIMEOUT);" (call_expression "Curl_expire(data,(data->set).expect_100_timeout,EXPIRE_100_TIMEOUT)" identifier (argument_list "(data,(data->set).expect_100_timeout,EXPIRE_100_TIMEOUT)" ( identifier , (field_expression "(data->set).expect_100_timeout" (parenthesized_expression "(data->set)" ( (field_expression "data->set" identifier -> field_identifier) )) . field_identifier) , identifier ))) ;) (goto_statement "goto LAB_00039ea1;" goto statement_identifier ;) })) (expression_statement "bVar25 = false;" (assignment_expression "bVar25 = false" identifier = false) ;) (if_statement "if ((conn->handler->protocol & 0x40003) != 0) {\n            bVar25 = *(int *)((int)pvVar6 + 0x1a0) == 1;\n          }" if (parenthesized_expression "((conn->handler->protocol & 0x40003) != 0)" ( (binary_expression "(conn->handler->protocol & 0x40003) != 0" (parenthesized_expression "(conn->handler->protocol & 0x40003)" ( (binary_expression "conn->handler->protocol & 0x40003" (field_expression "conn->handler->protocol" (field_expression "conn->handler" identifier -> field_identifier) -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n            bVar25 = *(int *)((int)pvVar6 + 0x1a0) == 1;\n          }" { (expression_statement "bVar25 = *(int *)((int)pvVar6 + 0x1a0) == 1;" (assignment_expression "bVar25 = *(int *)((int)pvVar6 + 0x1a0) == 1" identifier = (binary_expression "*(int *)((int)pvVar6 + 0x1a0) == 1" (pointer_expression "*(int *)((int)pvVar6 + 0x1a0)" * (cast_expression "(int *)((int)pvVar6 + 0x1a0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar6 + 0x1a0)" ( (binary_expression "(int)pvVar6 + 0x1a0" (cast_expression "(int)pvVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == number_literal)) ;) })) (expression_statement "CVar12 = Curl_fillreadbuffer(conn,(data->set).upload_buffer_size,(size_t *)&nread);" (assignment_expression "CVar12 = Curl_fillreadbuffer(conn,(data->set).upload_buffer_size,(size_t *)&nread)" identifier = (call_expression "Curl_fillreadbuffer(conn,(data->set).upload_buffer_size,(size_t *)&nread)" identifier (argument_list "(conn,(data->set).upload_buffer_size,(size_t *)&nread)" ( identifier , (field_expression "(data->set).upload_buffer_size" (parenthesized_expression "(data->set)" ( (field_expression "data->set" identifier -> field_identifier) )) . field_identifier) , (cast_expression "(size_t *)&nread" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&nread" & identifier)) )))) ;) (expression_statement "sVar8 = nread;" (assignment_expression "sVar8 = nread" identifier = identifier) ;) (if_statement "if (CVar12 != CURLE_OK) goto LAB_00039d70;" if (parenthesized_expression "(CVar12 != CURLE_OK)" ( (binary_expression "CVar12 != CURLE_OK" identifier != identifier) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (expression_statement "local_6c = nread;" (assignment_expression "local_6c = nread" identifier = identifier) ;) (if_statement "if (nread == 0) goto LAB_0003a898;" if (parenthesized_expression "(nread == 0)" ( (binary_expression "nread == 0" identifier == number_literal) )) (goto_statement "goto LAB_0003a898;" goto statement_identifier ;)) (if_statement "if (0 < nread) {\n            (data->req).upload_present = nread;\n            if ((!bVar25) && (((data->set).prefer_ascii != false || ((data->set).crlf != false)))) {\n              pcVar17 = (data->state).scratch;\n              if (pcVar17 == (char *)0x0) {\n                pcVar17 = (char *)(*Curl_cmalloc)((data->set).upload_buffer_size * 2);\n                (data->state).scratch = pcVar17;\n                if (pcVar17 == (char *)0x0) {\n                  CVar12 = CURLE_OUT_OF_MEMORY;\n                  Curl_failf(data,"Failed to alloc scratch buffer!",conn,conn);\n                  goto LAB_00039d70;\n                }\n              }\n              iVar20 = 0;\n              iVar24 = 0;\n              while( true ) {\n                iVar19 = iVar24 + 1;\n                cVar10 = (data->req).upload_fromhere[iVar20];\n                if (cVar10 == '\n') {\n                  pcVar17[iVar24] = '\r';\n                  (data->state).scratch[iVar24 + 1] = '\n';\n                  iVar19 = iVar24 + 2;\n                  if ((data->set).crlf == false) {\n                    uVar14 = *(uint *)((int)&(data->state).infilesize + 4);\n                    uVar15 = (uint)(data->state).infilesize;\n                    if ((uVar14 & uVar15) != 0xffffffff) {\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }\n                  }\n                }\n                else {\n                  pcVar17[iVar24] = cVar10;\n                }\n                iVar20 = iVar20 + 1;\n                if (sVar8 == iVar20) break;\n                pcVar17 = (data->state).scratch;\n                iVar24 = iVar19;\n              }\n              if (sVar8 != iVar19) {\n                pcVar17 = (data->state).scratch;\n                (data->req).upload_present = iVar19;\n                (data->req).upload_fromhere = pcVar17;\n                local_6c = iVar19;\n              }\n            }\n            if (((conn->handler->protocol & 0x30000) != 0) &&\n               (CVar12 = Curl_smtp_escape_eob(conn,local_6c), CVar12 != CURLE_OK))\n            goto LAB_00039d70;\n            sVar18 = (data->req).upload_present;\n            goto LAB_00039b53;\n          }" if (parenthesized_expression "(0 < nread)" ( (binary_expression "0 < nread" number_literal < identifier) )) (compound_statement "{\n            (data->req).upload_present = nread;\n            if ((!bVar25) && (((data->set).prefer_ascii != false || ((data->set).crlf != false)))) {\n              pcVar17 = (data->state).scratch;\n              if (pcVar17 == (char *)0x0) {\n                pcVar17 = (char *)(*Curl_cmalloc)((data->set).upload_buffer_size * 2);\n                (data->state).scratch = pcVar17;\n                if (pcVar17 == (char *)0x0) {\n                  CVar12 = CURLE_OUT_OF_MEMORY;\n                  Curl_failf(data,"Failed to alloc scratch buffer!",conn,conn);\n                  goto LAB_00039d70;\n                }\n              }\n              iVar20 = 0;\n              iVar24 = 0;\n              while( true ) {\n                iVar19 = iVar24 + 1;\n                cVar10 = (data->req).upload_fromhere[iVar20];\n                if (cVar10 == '\n') {\n                  pcVar17[iVar24] = '\r';\n                  (data->state).scratch[iVar24 + 1] = '\n';\n                  iVar19 = iVar24 + 2;\n                  if ((data->set).crlf == false) {\n                    uVar14 = *(uint *)((int)&(data->state).infilesize + 4);\n                    uVar15 = (uint)(data->state).infilesize;\n                    if ((uVar14 & uVar15) != 0xffffffff) {\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }\n                  }\n                }\n                else {\n                  pcVar17[iVar24] = cVar10;\n                }\n                iVar20 = iVar20 + 1;\n                if (sVar8 == iVar20) break;\n                pcVar17 = (data->state).scratch;\n                iVar24 = iVar19;\n              }\n              if (sVar8 != iVar19) {\n                pcVar17 = (data->state).scratch;\n                (data->req).upload_present = iVar19;\n                (data->req).upload_fromhere = pcVar17;\n                local_6c = iVar19;\n              }\n            }\n            if (((conn->handler->protocol & 0x30000) != 0) &&\n               (CVar12 = Curl_smtp_escape_eob(conn,local_6c), CVar12 != CURLE_OK))\n            goto LAB_00039d70;\n            sVar18 = (data->req).upload_present;\n            goto LAB_00039b53;\n          }" { (expression_statement "(data->req).upload_present = nread;" (assignment_expression "(data->req).upload_present = nread" (field_expression "(data->req).upload_present" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if ((!bVar25) && (((data->set).prefer_ascii != false || ((data->set).crlf != false)))) {\n              pcVar17 = (data->state).scratch;\n              if (pcVar17 == (char *)0x0) {\n                pcVar17 = (char *)(*Curl_cmalloc)((data->set).upload_buffer_size * 2);\n                (data->state).scratch = pcVar17;\n                if (pcVar17 == (char *)0x0) {\n                  CVar12 = CURLE_OUT_OF_MEMORY;\n                  Curl_failf(data,"Failed to alloc scratch buffer!",conn,conn);\n                  goto LAB_00039d70;\n                }\n              }\n              iVar20 = 0;\n              iVar24 = 0;\n              while( true ) {\n                iVar19 = iVar24 + 1;\n                cVar10 = (data->req).upload_fromhere[iVar20];\n                if (cVar10 == '\n') {\n                  pcVar17[iVar24] = '\r';\n                  (data->state).scratch[iVar24 + 1] = '\n';\n                  iVar19 = iVar24 + 2;\n                  if ((data->set).crlf == false) {\n                    uVar14 = *(uint *)((int)&(data->state).infilesize + 4);\n                    uVar15 = (uint)(data->state).infilesize;\n                    if ((uVar14 & uVar15) != 0xffffffff) {\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }\n                  }\n                }\n                else {\n                  pcVar17[iVar24] = cVar10;\n                }\n                iVar20 = iVar20 + 1;\n                if (sVar8 == iVar20) break;\n                pcVar17 = (data->state).scratch;\n                iVar24 = iVar19;\n              }\n              if (sVar8 != iVar19) {\n                pcVar17 = (data->state).scratch;\n                (data->req).upload_present = iVar19;\n                (data->req).upload_fromhere = pcVar17;\n                local_6c = iVar19;\n              }\n            }" if (parenthesized_expression "((!bVar25) && (((data->set).prefer_ascii != false || ((data->set).crlf != false))))" ( (binary_expression "(!bVar25) && (((data->set).prefer_ascii != false || ((data->set).crlf != false)))" (parenthesized_expression "(!bVar25)" ( (unary_expression "!bVar25" ! identifier) )) && (parenthesized_expression "(((data->set).prefer_ascii != false || ((data->set).crlf != false)))" ( (parenthesized_expression "((data->set).prefer_ascii != false || ((data->set).crlf != false))" ( (binary_expression "(data->set).prefer_ascii != false || ((data->set).crlf != false)" (binary_expression "(data->set).prefer_ascii != false" (field_expression "(data->set).prefer_ascii" (parenthesized_expression "(data->set)" ( (field_expression "data->set" identifier -> field_identifier) )) . field_identifier) != false) || (parenthesized_expression "((data->set).crlf != false)" ( (binary_expression "(data->set).crlf != false" (field_expression "(data->set).crlf" (parenthesized_expression "(data->set)" ( (field_expression "data->set" identifier -> field_identifier) )) . field_identifier) != false) ))) )) ))) )) (compound_statement "{\n              pcVar17 = (data->state).scratch;\n              if (pcVar17 == (char *)0x0) {\n                pcVar17 = (char *)(*Curl_cmalloc)((data->set).upload_buffer_size * 2);\n                (data->state).scratch = pcVar17;\n                if (pcVar17 == (char *)0x0) {\n                  CVar12 = CURLE_OUT_OF_MEMORY;\n                  Curl_failf(data,"Failed to alloc scratch buffer!",conn,conn);\n                  goto LAB_00039d70;\n                }\n              }\n              iVar20 = 0;\n              iVar24 = 0;\n              while( true ) {\n                iVar19 = iVar24 + 1;\n                cVar10 = (data->req).upload_fromhere[iVar20];\n                if (cVar10 == '\n') {\n                  pcVar17[iVar24] = '\r';\n                  (data->state).scratch[iVar24 + 1] = '\n';\n                  iVar19 = iVar24 + 2;\n                  if ((data->set).crlf == false) {\n                    uVar14 = *(uint *)((int)&(data->state).infilesize + 4);\n                    uVar15 = (uint)(data->state).infilesize;\n                    if ((uVar14 & uVar15) != 0xffffffff) {\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }\n                  }\n                }\n                else {\n                  pcVar17[iVar24] = cVar10;\n                }\n                iVar20 = iVar20 + 1;\n                if (sVar8 == iVar20) break;\n                pcVar17 = (data->state).scratch;\n                iVar24 = iVar19;\n              }\n              if (sVar8 != iVar19) {\n                pcVar17 = (data->state).scratch;\n                (data->req).upload_present = iVar19;\n                (data->req).upload_fromhere = pcVar17;\n                local_6c = iVar19;\n              }\n            }" { (expression_statement "pcVar17 = (data->state).scratch;" (assignment_expression "pcVar17 = (data->state).scratch" identifier = (field_expression "(data->state).scratch" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (pcVar17 == (char *)0x0) {\n                pcVar17 = (char *)(*Curl_cmalloc)((data->set).upload_buffer_size * 2);\n                (data->state).scratch = pcVar17;\n                if (pcVar17 == (char *)0x0) {\n                  CVar12 = CURLE_OUT_OF_MEMORY;\n                  Curl_failf(data,"Failed to alloc scratch buffer!",conn,conn);\n                  goto LAB_00039d70;\n                }\n              }" if (parenthesized_expression "(pcVar17 == (char *)0x0)" ( (binary_expression "pcVar17 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                pcVar17 = (char *)(*Curl_cmalloc)((data->set).upload_buffer_size * 2);\n                (data->state).scratch = pcVar17;\n                if (pcVar17 == (char *)0x0) {\n                  CVar12 = CURLE_OUT_OF_MEMORY;\n                  Curl_failf(data,"Failed to alloc scratch buffer!",conn,conn);\n                  goto LAB_00039d70;\n                }\n              }" { (expression_statement "pcVar17 = (char *)(*Curl_cmalloc)((data->set).upload_buffer_size * 2);" (assignment_expression "pcVar17 = (char *)(*Curl_cmalloc)((data->set).upload_buffer_size * 2)" identifier = (cast_expression "(char *)(*Curl_cmalloc)((data->set).upload_buffer_size * 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*Curl_cmalloc)((data->set).upload_buffer_size * 2)" (parenthesized_expression "(*Curl_cmalloc)" ( (pointer_expression "*Curl_cmalloc" * identifier) )) (argument_list "((data->set).upload_buffer_size * 2)" ( (binary_expression "(data->set).upload_buffer_size * 2" (field_expression "(data->set).upload_buffer_size" (parenthesized_expression "(data->set)" ( (field_expression "data->set" identifier -> field_identifier) )) . field_identifier) * number_literal) ))))) ;) (expression_statement "(data->state).scratch = pcVar17;" (assignment_expression "(data->state).scratch = pcVar17" (field_expression "(data->state).scratch" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (pcVar17 == (char *)0x0) {\n                  CVar12 = CURLE_OUT_OF_MEMORY;\n                  Curl_failf(data,"Failed to alloc scratch buffer!",conn,conn);\n                  goto LAB_00039d70;\n                }" if (parenthesized_expression "(pcVar17 == (char *)0x0)" ( (binary_expression "pcVar17 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  CVar12 = CURLE_OUT_OF_MEMORY;\n                  Curl_failf(data,"Failed to alloc scratch buffer!",conn,conn);\n                  goto LAB_00039d70;\n                }" { (expression_statement "CVar12 = CURLE_OUT_OF_MEMORY;" (assignment_expression "CVar12 = CURLE_OUT_OF_MEMORY" identifier = identifier) ;) (expression_statement "Curl_failf(data,"Failed to alloc scratch buffer!",conn,conn);" (call_expression "Curl_failf(data,"Failed to alloc scratch buffer!",conn,conn)" identifier (argument_list "(data,"Failed to alloc scratch buffer!",conn,conn)" ( identifier , (string_literal ""Failed to alloc scratch buffer!"" " string_content ") , identifier , identifier ))) ;) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) })) (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n                iVar19 = iVar24 + 1;\n                cVar10 = (data->req).upload_fromhere[iVar20];\n                if (cVar10 == '\n') {\n                  pcVar17[iVar24] = '\r';\n                  (data->state).scratch[iVar24 + 1] = '\n';\n                  iVar19 = iVar24 + 2;\n                  if ((data->set).crlf == false) {\n                    uVar14 = *(uint *)((int)&(data->state).infilesize + 4);\n                    uVar15 = (uint)(data->state).infilesize;\n                    if ((uVar14 & uVar15) != 0xffffffff) {\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }\n                  }\n                }\n                else {\n                  pcVar17[iVar24] = cVar10;\n                }\n                iVar20 = iVar20 + 1;\n                if (sVar8 == iVar20) break;\n                pcVar17 = (data->state).scratch;\n                iVar24 = iVar19;\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                iVar19 = iVar24 + 1;\n                cVar10 = (data->req).upload_fromhere[iVar20];\n                if (cVar10 == '\n') {\n                  pcVar17[iVar24] = '\r';\n                  (data->state).scratch[iVar24 + 1] = '\n';\n                  iVar19 = iVar24 + 2;\n                  if ((data->set).crlf == false) {\n                    uVar14 = *(uint *)((int)&(data->state).infilesize + 4);\n                    uVar15 = (uint)(data->state).infilesize;\n                    if ((uVar14 & uVar15) != 0xffffffff) {\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }\n                  }\n                }\n                else {\n                  pcVar17[iVar24] = cVar10;\n                }\n                iVar20 = iVar20 + 1;\n                if (sVar8 == iVar20) break;\n                pcVar17 = (data->state).scratch;\n                iVar24 = iVar19;\n              }" { (expression_statement "iVar19 = iVar24 + 1;" (assignment_expression "iVar19 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) ;) (expression_statement "cVar10 = (data->req).upload_fromhere[iVar20];" (assignment_expression "cVar10 = (data->req).upload_fromhere[iVar20]" identifier = (subscript_expression "(data->req).upload_fromhere[iVar20]" (field_expression "(data->req).upload_fromhere" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) [ identifier ])) ;) (if_statement "if (cVar10 == '\n') {\n                  pcVar17[iVar24] = '\r';\n                  (data->state).scratch[iVar24 + 1] = '\n';\n                  iVar19 = iVar24 + 2;\n                  if ((data->set).crlf == false) {\n                    uVar14 = *(uint *)((int)&(data->state).infilesize + 4);\n                    uVar15 = (uint)(data->state).infilesize;\n                    if ((uVar14 & uVar15) != 0xffffffff) {\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }\n                  }\n                }\n                else {\n                  pcVar17[iVar24] = cVar10;\n                }" if (parenthesized_expression "(cVar10 == '\n')" ( (binary_expression "cVar10 == '\n'" identifier == (char_literal "'\n'" ' escape_sequence ')) )) (compound_statement "{\n                  pcVar17[iVar24] = '\r';\n                  (data->state).scratch[iVar24 + 1] = '\n';\n                  iVar19 = iVar24 + 2;\n                  if ((data->set).crlf == false) {\n                    uVar14 = *(uint *)((int)&(data->state).infilesize + 4);\n                    uVar15 = (uint)(data->state).infilesize;\n                    if ((uVar14 & uVar15) != 0xffffffff) {\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }\n                  }\n                }" { (expression_statement "pcVar17[iVar24] = '\r';" (assignment_expression "pcVar17[iVar24] = '\r'" (subscript_expression "pcVar17[iVar24]" identifier [ identifier ]) = (char_literal "'\r'" ' escape_sequence ')) ;) (expression_statement "(data->state).scratch[iVar24 + 1] = '\n';" (assignment_expression "(data->state).scratch[iVar24 + 1] = '\n'" (subscript_expression "(data->state).scratch[iVar24 + 1]" (field_expression "(data->state).scratch" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier) [ (binary_expression "iVar24 + 1" identifier + number_literal) ]) = (char_literal "'\n'" ' escape_sequence ')) ;) (expression_statement "iVar19 = iVar24 + 2;" (assignment_expression "iVar19 = iVar24 + 2" identifier = (binary_expression "iVar24 + 2" identifier + number_literal)) ;) (if_statement "if ((data->set).crlf == false) {\n                    uVar14 = *(uint *)((int)&(data->state).infilesize + 4);\n                    uVar15 = (uint)(data->state).infilesize;\n                    if ((uVar14 & uVar15) != 0xffffffff) {\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }\n                  }" if (parenthesized_expression "((data->set).crlf == false)" ( (binary_expression "(data->set).crlf == false" (field_expression "(data->set).crlf" (parenthesized_expression "(data->set)" ( (field_expression "data->set" identifier -> field_identifier) )) . field_identifier) == false) )) (compound_statement "{\n                    uVar14 = *(uint *)((int)&(data->state).infilesize + 4);\n                    uVar15 = (uint)(data->state).infilesize;\n                    if ((uVar14 & uVar15) != 0xffffffff) {\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }\n                  }" { (expression_statement "uVar14 = *(uint *)((int)&(data->state).infilesize + 4);" (assignment_expression "uVar14 = *(uint *)((int)&(data->state).infilesize + 4)" identifier = (pointer_expression "*(uint *)((int)&(data->state).infilesize + 4)" * (cast_expression "(uint *)((int)&(data->state).infilesize + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->state).infilesize + 4)" ( (binary_expression "(int)&(data->state).infilesize + 4" (cast_expression "(int)&(data->state).infilesize" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->state).infilesize" & (field_expression "(data->state).infilesize" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar15 = (uint)(data->state).infilesize;" (assignment_expression "uVar15 = (uint)(data->state).infilesize" identifier = (field_expression "(uint)(data->state).infilesize" (call_expression "(uint)(data->state)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) ))) . field_identifier)) ;) (if_statement "if ((uVar14 & uVar15) != 0xffffffff) {\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }" if (parenthesized_expression "((uVar14 & uVar15) != 0xffffffff)" ( (binary_expression "(uVar14 & uVar15) != 0xffffffff" (parenthesized_expression "(uVar14 & uVar15)" ( (binary_expression "uVar14 & uVar15" identifier & identifier) )) != number_literal) )) (compound_statement "{\n                      *(uint *)&(data->state).infilesize = uVar15 + 1;\n                      *(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;\n                    }" { (expression_statement "*(uint *)&(data->state).infilesize = uVar15 + 1;" (assignment_expression "*(uint *)&(data->state).infilesize = uVar15 + 1" (pointer_expression "*(uint *)&(data->state).infilesize" * (cast_expression "(uint *)&(data->state).infilesize" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(data->state).infilesize" & (field_expression "(data->state).infilesize" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier)))) = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (expression_statement "*(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)\n                      ;" (assignment_expression "*(uint *)((int)&(data->state).infilesize + 4) = uVar14 + (0xfffffffe < uVar15)" (pointer_expression "*(uint *)((int)&(data->state).infilesize + 4)" * (cast_expression "(uint *)((int)&(data->state).infilesize + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->state).infilesize + 4)" ( (binary_expression "(int)&(data->state).infilesize + 4" (cast_expression "(int)&(data->state).infilesize" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->state).infilesize" & (field_expression "(data->state).infilesize" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (binary_expression "uVar14 + (0xfffffffe < uVar15)" identifier + (parenthesized_expression "(0xfffffffe < uVar15)" ( (binary_expression "0xfffffffe < uVar15" number_literal < identifier) )))) ;) })) })) }) (else_clause "else {\n                  pcVar17[iVar24] = cVar10;\n                }" else (compound_statement "{\n                  pcVar17[iVar24] = cVar10;\n                }" { (expression_statement "pcVar17[iVar24] = cVar10;" (assignment_expression "pcVar17[iVar24] = cVar10" (subscript_expression "pcVar17[iVar24]" identifier [ identifier ]) = identifier) ;) }))) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (if_statement "if (sVar8 == iVar20) break;" if (parenthesized_expression "(sVar8 == iVar20)" ( (binary_expression "sVar8 == iVar20" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "pcVar17 = (data->state).scratch;" (assignment_expression "pcVar17 = (data->state).scratch" identifier = (field_expression "(data->state).scratch" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "iVar24 = iVar19;" (assignment_expression "iVar24 = iVar19" identifier = identifier) ;) })) (if_statement "if (sVar8 != iVar19) {\n                pcVar17 = (data->state).scratch;\n                (data->req).upload_present = iVar19;\n                (data->req).upload_fromhere = pcVar17;\n                local_6c = iVar19;\n              }" if (parenthesized_expression "(sVar8 != iVar19)" ( (binary_expression "sVar8 != iVar19" identifier != identifier) )) (compound_statement "{\n                pcVar17 = (data->state).scratch;\n                (data->req).upload_present = iVar19;\n                (data->req).upload_fromhere = pcVar17;\n                local_6c = iVar19;\n              }" { (expression_statement "pcVar17 = (data->state).scratch;" (assignment_expression "pcVar17 = (data->state).scratch" identifier = (field_expression "(data->state).scratch" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(data->req).upload_present = iVar19;" (assignment_expression "(data->req).upload_present = iVar19" (field_expression "(data->req).upload_present" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(data->req).upload_fromhere = pcVar17;" (assignment_expression "(data->req).upload_fromhere = pcVar17" (field_expression "(data->req).upload_fromhere" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "local_6c = iVar19;" (assignment_expression "local_6c = iVar19" identifier = identifier) ;) })) })) (if_statement "if (((conn->handler->protocol & 0x30000) != 0) &&\n               (CVar12 = Curl_smtp_escape_eob(conn,local_6c), CVar12 != CURLE_OK))\n            goto LAB_00039d70;" if (parenthesized_expression "(((conn->handler->protocol & 0x30000) != 0) &&\n               (CVar12 = Curl_smtp_escape_eob(conn,local_6c), CVar12 != CURLE_OK))" ( (binary_expression "((conn->handler->protocol & 0x30000) != 0) &&\n               (CVar12 = Curl_smtp_escape_eob(conn,local_6c), CVar12 != CURLE_OK)" (parenthesized_expression "((conn->handler->protocol & 0x30000) != 0)" ( (binary_expression "(conn->handler->protocol & 0x30000) != 0" (parenthesized_expression "(conn->handler->protocol & 0x30000)" ( (binary_expression "conn->handler->protocol & 0x30000" (field_expression "conn->handler->protocol" (field_expression "conn->handler" identifier -> field_identifier) -> field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "(CVar12 = Curl_smtp_escape_eob(conn,local_6c), CVar12 != CURLE_OK)" ( (comma_expression "CVar12 = Curl_smtp_escape_eob(conn,local_6c), CVar12 != CURLE_OK" (assignment_expression "CVar12 = Curl_smtp_escape_eob(conn,local_6c)" identifier = (call_expression "Curl_smtp_escape_eob(conn,local_6c)" identifier (argument_list "(conn,local_6c)" ( identifier , identifier )))) , (binary_expression "CVar12 != CURLE_OK" identifier != identifier)) ))) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (expression_statement "sVar18 = (data->req).upload_present;" (assignment_expression "sVar18 = (data->req).upload_present" identifier = (field_expression "(data->req).upload_present" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) (goto_statement "goto LAB_00039b53;" goto statement_identifier ;) })) (expression_statement "uVar14 = (data->req).keepon;" (assignment_expression "uVar14 = (data->req).keepon" identifier = (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) }) (else_clause "else {\nLAB_0003a898:\n          uVar14 = (data->req).keepon;\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }" else (compound_statement "{\nLAB_0003a898:\n          uVar14 = (data->req).keepon;\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }" { (labeled_statement "LAB_0003a898:\n          uVar14 = (data->req).keepon;" statement_identifier : (expression_statement "uVar14 = (data->req).keepon;" (assignment_expression "uVar14 = (data->req).keepon" identifier = (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;)) (if_statement "if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;" if (parenthesized_expression "((uVar14 & 0x20) != 0)" ( (binary_expression "(uVar14 & 0x20) != 0" (parenthesized_expression "(uVar14 & 0x20)" ( (binary_expression "uVar14 & 0x20" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00039c0b;" goto statement_identifier ;)) }))) (expression_statement "(data->req).keepon = uVar14 & 0xfffffffd;" (assignment_expression "(data->req).keepon = uVar14 & 0xfffffffd" (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) = (binary_expression "uVar14 & 0xfffffffd" identifier & number_literal)) ;) (expression_statement "Curl_http2_done_sending(conn);" (call_expression "Curl_http2_done_sending(conn)" identifier (argument_list "(conn)" ( identifier ))) ;) (if_statement "if (((conn->bits).rewindaftersend != false) &&\n           (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;" if (parenthesized_expression "(((conn->bits).rewindaftersend != false) &&\n           (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK))" ( (binary_expression "((conn->bits).rewindaftersend != false) &&\n           (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)" (parenthesized_expression "((conn->bits).rewindaftersend != false)" ( (binary_expression "(conn->bits).rewindaftersend != false" (field_expression "(conn->bits).rewindaftersend" (parenthesized_expression "(conn->bits)" ( (field_expression "conn->bits" identifier -> field_identifier) )) . field_identifier) != false) )) && (parenthesized_expression "(CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)" ( (comma_expression "CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK" (assignment_expression "CVar12 = Curl_readrewind(conn)" identifier = (call_expression "Curl_readrewind(conn)" identifier (argument_list "(conn)" ( identifier )))) , (binary_expression "CVar12 != CURLE_OK" identifier != identifier)) ))) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_00039b53:\n        local_74 = &nread;\n        CVar12 = Curl_write(conn,conn->writesockfd,(data->req).upload_fromhere,sVar18,local_74);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        if ((data->set).verbose != false) {\n          Curl_debug(data,CURLINFO_DATA_OUT,(data->req).upload_fromhere,nread);\n        }\n        pcVar4 = &(data->req).writebytecount;\n        iVar24 = nread + (int)*pcVar4;\n        iVar20 = (nread >> 0x1f) + *(int *)((int)&(data->req).writebytecount + 4) +\n                 (uint)CARRY4(nread,(uint)*pcVar4);\n        _Var9 = (data->req).upload_chunky;\n        *(int *)&(data->req).writebytecount = iVar24;\n        *(int *)((int)&(data->req).writebytecount + 4) = iVar20;\n        if (((_Var9 == false) || ((data->req).forbidchunk != false)) &&\n           (iVar20 == *(int *)((int)&(data->state).infilesize + 4) &&\n            iVar24 == (int)(data->state).infilesize)) {\n          (data->req).upload_done = true;\n          Curl_infof(data,"We are completely uploaded and fine\n");\n        }\n        iVar24 = (data->req).upload_present;\n        if (iVar24 == nread) {\n          CVar12 = Curl_get_upload_buffer(data);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          pcVar17 = (data->state).ulbuf;\n          (data->req).upload_present = 0;\n          (data->req).upload_fromhere = pcVar17;\n          if ((data->req).upload_done != false) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            Curl_http2_done_sending(conn);\n            if (((conn->bits).rewindaftersend != false) &&\n               (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n          }\n        }\n        else {\n          ppcVar1 = &(data->req).upload_fromhere;\n          *ppcVar1 = *ppcVar1 + nread;\n          (data->req).upload_present = iVar24 - nread;\n        }\n        Curl_pgrsSetUploadCounter(data,(data->req).writebytecount);\n      }" else (compound_statement "{\nLAB_00039b53:\n        local_74 = &nread;\n        CVar12 = Curl_write(conn,conn->writesockfd,(data->req).upload_fromhere,sVar18,local_74);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        if ((data->set).verbose != false) {\n          Curl_debug(data,CURLINFO_DATA_OUT,(data->req).upload_fromhere,nread);\n        }\n        pcVar4 = &(data->req).writebytecount;\n        iVar24 = nread + (int)*pcVar4;\n        iVar20 = (nread >> 0x1f) + *(int *)((int)&(data->req).writebytecount + 4) +\n                 (uint)CARRY4(nread,(uint)*pcVar4);\n        _Var9 = (data->req).upload_chunky;\n        *(int *)&(data->req).writebytecount = iVar24;\n        *(int *)((int)&(data->req).writebytecount + 4) = iVar20;\n        if (((_Var9 == false) || ((data->req).forbidchunk != false)) &&\n           (iVar20 == *(int *)((int)&(data->state).infilesize + 4) &&\n            iVar24 == (int)(data->state).infilesize)) {\n          (data->req).upload_done = true;\n          Curl_infof(data,"We are completely uploaded and fine\n");\n        }\n        iVar24 = (data->req).upload_present;\n        if (iVar24 == nread) {\n          CVar12 = Curl_get_upload_buffer(data);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          pcVar17 = (data->state).ulbuf;\n          (data->req).upload_present = 0;\n          (data->req).upload_fromhere = pcVar17;\n          if ((data->req).upload_done != false) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            Curl_http2_done_sending(conn);\n            if (((conn->bits).rewindaftersend != false) &&\n               (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n          }\n        }\n        else {\n          ppcVar1 = &(data->req).upload_fromhere;\n          *ppcVar1 = *ppcVar1 + nread;\n          (data->req).upload_present = iVar24 - nread;\n        }\n        Curl_pgrsSetUploadCounter(data,(data->req).writebytecount);\n      }" { (labeled_statement "LAB_00039b53:\n        local_74 = &nread;" statement_identifier : (expression_statement "local_74 = &nread;" (assignment_expression "local_74 = &nread" identifier = (pointer_expression "&nread" & identifier)) ;)) (expression_statement "CVar12 = Curl_write(conn,conn->writesockfd,(data->req).upload_fromhere,sVar18,local_74);" (assignment_expression "CVar12 = Curl_write(conn,conn->writesockfd,(data->req).upload_fromhere,sVar18,local_74)" identifier = (call_expression "Curl_write(conn,conn->writesockfd,(data->req).upload_fromhere,sVar18,local_74)" identifier (argument_list "(conn,conn->writesockfd,(data->req).upload_fromhere,sVar18,local_74)" ( identifier , (field_expression "conn->writesockfd" identifier -> field_identifier) , (field_expression "(data->req).upload_fromhere" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) , identifier , identifier )))) ;) (if_statement "if (CVar12 != CURLE_OK) goto LAB_00039d70;" if (parenthesized_expression "(CVar12 != CURLE_OK)" ( (binary_expression "CVar12 != CURLE_OK" identifier != identifier) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (if_statement "if ((data->set).verbose != false) {\n          Curl_debug(data,CURLINFO_DATA_OUT,(data->req).upload_fromhere,nread);\n        }" if (parenthesized_expression "((data->set).verbose != false)" ( (binary_expression "(data->set).verbose != false" (field_expression "(data->set).verbose" (parenthesized_expression "(data->set)" ( (field_expression "data->set" identifier -> field_identifier) )) . field_identifier) != false) )) (compound_statement "{\n          Curl_debug(data,CURLINFO_DATA_OUT,(data->req).upload_fromhere,nread);\n        }" { (expression_statement "Curl_debug(data,CURLINFO_DATA_OUT,(data->req).upload_fromhere,nread);" (call_expression "Curl_debug(data,CURLINFO_DATA_OUT,(data->req).upload_fromhere,nread)" identifier (argument_list "(data,CURLINFO_DATA_OUT,(data->req).upload_fromhere,nread)" ( identifier , identifier , (field_expression "(data->req).upload_fromhere" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) , identifier ))) ;) })) (expression_statement "pcVar4 = &(data->req).writebytecount;" (assignment_expression "pcVar4 = &(data->req).writebytecount" identifier = (pointer_expression "&(data->req).writebytecount" & (field_expression "(data->req).writebytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "iVar24 = nread + (int)*pcVar4;" (assignment_expression "iVar24 = nread + (int)*pcVar4" identifier = (binary_expression "nread + (int)*pcVar4" identifier + (cast_expression "(int)*pcVar4" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar4" * identifier)))) ;) (expression_statement "iVar20 = (nread >> 0x1f) + *(int *)((int)&(data->req).writebytecount + 4) +\n                 (uint)CARRY4(nread,(uint)*pcVar4);" (assignment_expression "iVar20 = (nread >> 0x1f) + *(int *)((int)&(data->req).writebytecount + 4) +\n                 (uint)CARRY4(nread,(uint)*pcVar4)" identifier = (binary_expression "(nread >> 0x1f) + *(int *)((int)&(data->req).writebytecount + 4) +\n                 (uint)CARRY4(nread,(uint)*pcVar4)" (binary_expression "(nread >> 0x1f) + *(int *)((int)&(data->req).writebytecount + 4)" (parenthesized_expression "(nread >> 0x1f)" ( (binary_expression "nread >> 0x1f" identifier >> number_literal) )) + (pointer_expression "*(int *)((int)&(data->req).writebytecount + 4)" * (cast_expression "(int *)((int)&(data->req).writebytecount + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).writebytecount + 4)" ( (binary_expression "(int)&(data->req).writebytecount + 4" (cast_expression "(int)&(data->req).writebytecount" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).writebytecount" & (field_expression "(data->req).writebytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) + (cast_expression "(uint)CARRY4(nread,(uint)*pcVar4)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(nread,(uint)*pcVar4)" identifier (argument_list "(nread,(uint)*pcVar4)" ( identifier , (binary_expression "(uint)*pcVar4" (parenthesized_expression "(uint)" ( identifier )) * identifier) )))))) ;) (expression_statement "_Var9 = (data->req).upload_chunky;" (assignment_expression "_Var9 = (data->req).upload_chunky" identifier = (field_expression "(data->req).upload_chunky" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "*(int *)&(data->req).writebytecount = iVar24;" (assignment_expression "*(int *)&(data->req).writebytecount = iVar24" (pointer_expression "*(int *)&(data->req).writebytecount" * (cast_expression "(int *)&(data->req).writebytecount" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(data->req).writebytecount" & (field_expression "(data->req).writebytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)))) = identifier) ;) (expression_statement "*(int *)((int)&(data->req).writebytecount + 4) = iVar20;" (assignment_expression "*(int *)((int)&(data->req).writebytecount + 4) = iVar20" (pointer_expression "*(int *)((int)&(data->req).writebytecount + 4)" * (cast_expression "(int *)((int)&(data->req).writebytecount + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).writebytecount + 4)" ( (binary_expression "(int)&(data->req).writebytecount + 4" (cast_expression "(int)&(data->req).writebytecount" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).writebytecount" & (field_expression "(data->req).writebytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = identifier) ;) (if_statement "if (((_Var9 == false) || ((data->req).forbidchunk != false)) &&\n           (iVar20 == *(int *)((int)&(data->state).infilesize + 4) &&\n            iVar24 == (int)(data->state).infilesize)) {\n          (data->req).upload_done = true;\n          Curl_infof(data,"We are completely uploaded and fine\n");\n        }" if (parenthesized_expression "(((_Var9 == false) || ((data->req).forbidchunk != false)) &&\n           (iVar20 == *(int *)((int)&(data->state).infilesize + 4) &&\n            iVar24 == (int)(data->state).infilesize))" ( (binary_expression "((_Var9 == false) || ((data->req).forbidchunk != false)) &&\n           (iVar20 == *(int *)((int)&(data->state).infilesize + 4) &&\n            iVar24 == (int)(data->state).infilesize)" (parenthesized_expression "((_Var9 == false) || ((data->req).forbidchunk != false))" ( (binary_expression "(_Var9 == false) || ((data->req).forbidchunk != false)" (parenthesized_expression "(_Var9 == false)" ( (binary_expression "_Var9 == false" identifier == false) )) || (parenthesized_expression "((data->req).forbidchunk != false)" ( (binary_expression "(data->req).forbidchunk != false" (field_expression "(data->req).forbidchunk" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) != false) ))) )) && (parenthesized_expression "(iVar20 == *(int *)((int)&(data->state).infilesize + 4) &&\n            iVar24 == (int)(data->state).infilesize)" ( (binary_expression "iVar20 == *(int *)((int)&(data->state).infilesize + 4) &&\n            iVar24 == (int)(data->state).infilesize" (binary_expression "iVar20 == *(int *)((int)&(data->state).infilesize + 4)" identifier == (pointer_expression "*(int *)((int)&(data->state).infilesize + 4)" * (cast_expression "(int *)((int)&(data->state).infilesize + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->state).infilesize + 4)" ( (binary_expression "(int)&(data->state).infilesize + 4" (cast_expression "(int)&(data->state).infilesize" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->state).infilesize" & (field_expression "(data->state).infilesize" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) && (binary_expression "iVar24 == (int)(data->state).infilesize" identifier == (cast_expression "(int)(data->state).infilesize" ( (type_descriptor "int" primitive_type) ) (field_expression "(data->state).infilesize" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier)))) ))) )) (compound_statement "{\n          (data->req).upload_done = true;\n          Curl_infof(data,"We are completely uploaded and fine\n");\n        }" { (expression_statement "(data->req).upload_done = true;" (assignment_expression "(data->req).upload_done = true" (field_expression "(data->req).upload_done" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) = true) ;) (expression_statement "Curl_infof(data,"We are completely uploaded and fine\n");" (call_expression "Curl_infof(data,"We are completely uploaded and fine\n")" identifier (argument_list "(data,"We are completely uploaded and fine\n")" ( identifier , (string_literal ""We are completely uploaded and fine\n"" " string_content escape_sequence ") ))) ;) })) (expression_statement "iVar24 = (data->req).upload_present;" (assignment_expression "iVar24 = (data->req).upload_present" identifier = (field_expression "(data->req).upload_present" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (iVar24 == nread) {\n          CVar12 = Curl_get_upload_buffer(data);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          pcVar17 = (data->state).ulbuf;\n          (data->req).upload_present = 0;\n          (data->req).upload_fromhere = pcVar17;\n          if ((data->req).upload_done != false) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            Curl_http2_done_sending(conn);\n            if (((conn->bits).rewindaftersend != false) &&\n               (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n          }\n        }\n        else {\n          ppcVar1 = &(data->req).upload_fromhere;\n          *ppcVar1 = *ppcVar1 + nread;\n          (data->req).upload_present = iVar24 - nread;\n        }" if (parenthesized_expression "(iVar24 == nread)" ( (binary_expression "iVar24 == nread" identifier == identifier) )) (compound_statement "{\n          CVar12 = Curl_get_upload_buffer(data);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          pcVar17 = (data->state).ulbuf;\n          (data->req).upload_present = 0;\n          (data->req).upload_fromhere = pcVar17;\n          if ((data->req).upload_done != false) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            Curl_http2_done_sending(conn);\n            if (((conn->bits).rewindaftersend != false) &&\n               (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n          }\n        }" { (expression_statement "CVar12 = Curl_get_upload_buffer(data);" (assignment_expression "CVar12 = Curl_get_upload_buffer(data)" identifier = (call_expression "Curl_get_upload_buffer(data)" identifier (argument_list "(data)" ( identifier )))) ;) (if_statement "if (CVar12 != CURLE_OK) goto LAB_00039d70;" if (parenthesized_expression "(CVar12 != CURLE_OK)" ( (binary_expression "CVar12 != CURLE_OK" identifier != identifier) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (expression_statement "pcVar17 = (data->state).ulbuf;" (assignment_expression "pcVar17 = (data->state).ulbuf" identifier = (field_expression "(data->state).ulbuf" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(data->req).upload_present = 0;" (assignment_expression "(data->req).upload_present = 0" (field_expression "(data->req).upload_present" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(data->req).upload_fromhere = pcVar17;" (assignment_expression "(data->req).upload_fromhere = pcVar17" (field_expression "(data->req).upload_fromhere" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if ((data->req).upload_done != false) {\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            Curl_http2_done_sending(conn);\n            if (((conn->bits).rewindaftersend != false) &&\n               (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n          }" if (parenthesized_expression "((data->req).upload_done != false)" ( (binary_expression "(data->req).upload_done != false" (field_expression "(data->req).upload_done" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) != false) )) (compound_statement "{\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffd;\n            Curl_http2_done_sending(conn);\n            if (((conn->bits).rewindaftersend != false) &&\n               (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;\n          }" { (expression_statement "piVar2 = &(data->req).keepon;" (assignment_expression "piVar2 = &(data->req).keepon" identifier = (pointer_expression "&(data->req).keepon" & (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*piVar2 = *piVar2 & 0xfffffffd;" (assignment_expression "*piVar2 = *piVar2 & 0xfffffffd" (pointer_expression "*piVar2" * identifier) = (binary_expression "*piVar2 & 0xfffffffd" (pointer_expression "*piVar2" * identifier) & number_literal)) ;) (expression_statement "Curl_http2_done_sending(conn);" (call_expression "Curl_http2_done_sending(conn)" identifier (argument_list "(conn)" ( identifier ))) ;) (if_statement "if (((conn->bits).rewindaftersend != false) &&\n               (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)) goto LAB_00039d70;" if (parenthesized_expression "(((conn->bits).rewindaftersend != false) &&\n               (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK))" ( (binary_expression "((conn->bits).rewindaftersend != false) &&\n               (CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)" (parenthesized_expression "((conn->bits).rewindaftersend != false)" ( (binary_expression "(conn->bits).rewindaftersend != false" (field_expression "(conn->bits).rewindaftersend" (parenthesized_expression "(conn->bits)" ( (field_expression "conn->bits" identifier -> field_identifier) )) . field_identifier) != false) )) && (parenthesized_expression "(CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK)" ( (comma_expression "CVar12 = Curl_readrewind(conn), CVar12 != CURLE_OK" (assignment_expression "CVar12 = Curl_readrewind(conn)" identifier = (call_expression "Curl_readrewind(conn)" identifier (argument_list "(conn)" ( identifier )))) , (binary_expression "CVar12 != CURLE_OK" identifier != identifier)) ))) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) })) }) (else_clause "else {\n          ppcVar1 = &(data->req).upload_fromhere;\n          *ppcVar1 = *ppcVar1 + nread;\n          (data->req).upload_present = iVar24 - nread;\n        }" else (compound_statement "{\n          ppcVar1 = &(data->req).upload_fromhere;\n          *ppcVar1 = *ppcVar1 + nread;\n          (data->req).upload_present = iVar24 - nread;\n        }" { (expression_statement "ppcVar1 = &(data->req).upload_fromhere;" (assignment_expression "ppcVar1 = &(data->req).upload_fromhere" identifier = (pointer_expression "&(data->req).upload_fromhere" & (field_expression "(data->req).upload_fromhere" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*ppcVar1 = *ppcVar1 + nread;" (assignment_expression "*ppcVar1 = *ppcVar1 + nread" (pointer_expression "*ppcVar1" * identifier) = (binary_expression "*ppcVar1 + nread" (pointer_expression "*ppcVar1" * identifier) + identifier)) ;) (expression_statement "(data->req).upload_present = iVar24 - nread;" (assignment_expression "(data->req).upload_present = iVar24 - nread" (field_expression "(data->req).upload_present" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) = (binary_expression "iVar24 - nread" identifier - identifier)) ;) }))) (expression_statement "Curl_pgrsSetUploadCounter(data,(data->req).writebytecount);" (call_expression "Curl_pgrsSetUploadCounter(data,(data->req).writebytecount)" identifier (argument_list "(data,(data->req).writebytecount)" ( identifier , (field_expression "(data->req).writebytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) ))) ;) }))) (labeled_statement "LAB_00039c0b:\n      Curl_now();" statement_identifier : (expression_statement "Curl_now();" (call_expression "Curl_now()" identifier (argument_list "()" ( ))) ;)) (expression_statement "(data->req).now.tv_sec = local_34;" (assignment_expression "(data->req).now.tv_sec = local_34" (field_expression "(data->req).now.tv_sec" (field_expression "(data->req).now" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(data->req).now.tv_usec = iStack_30;" (assignment_expression "(data->req).now.tv_usec = iStack_30" (field_expression "(data->req).now.tv_usec" (field_expression "(data->req).now" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (goto_statement "goto LAB_00039ecb;" goto statement_identifier ;) })) (expression_statement "Curl_now();" (call_expression "Curl_now()" identifier (argument_list "()" ( ))) ;) (expression_statement "(data->req).now.tv_sec = local_34;" (assignment_expression "(data->req).now.tv_sec = local_34" (field_expression "(data->req).now.tv_sec" (field_expression "(data->req).now" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(data->req).now.tv_usec = iStack_30;" (assignment_expression "(data->req).now.tv_usec = iStack_30" (field_expression "(data->req).now.tv_usec" (field_expression "(data->req).now" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (labeled_statement "LAB_00039c5c:\n    if (((data->req).exp100 == EXP100_AWAITING_CONTINUE) &&\n       (tVar16 = Curl_timediff((data->req).now,(data->req).start100),\n       (data->set).expect_100_timeout <= tVar16)) {\n      piVar2 = &(data->req).keepon;\n      *piVar2 = *piVar2 | 2;\n      (data->req).exp100 = EXP100_SEND_DATA;\n      Curl_expire_done(data,EXPIRE_100_TIMEOUT);\n      Curl_infof(data,"Done waiting for 100-continue\n");\n    }" statement_identifier : (if_statement "if (((data->req).exp100 == EXP100_AWAITING_CONTINUE) &&\n       (tVar16 = Curl_timediff((data->req).now,(data->req).start100),\n       (data->set).expect_100_timeout <= tVar16)) {\n      piVar2 = &(data->req).keepon;\n      *piVar2 = *piVar2 | 2;\n      (data->req).exp100 = EXP100_SEND_DATA;\n      Curl_expire_done(data,EXPIRE_100_TIMEOUT);\n      Curl_infof(data,"Done waiting for 100-continue\n");\n    }" if (parenthesized_expression "(((data->req).exp100 == EXP100_AWAITING_CONTINUE) &&\n       (tVar16 = Curl_timediff((data->req).now,(data->req).start100),\n       (data->set).expect_100_timeout <= tVar16))" ( (binary_expression "((data->req).exp100 == EXP100_AWAITING_CONTINUE) &&\n       (tVar16 = Curl_timediff((data->req).now,(data->req).start100),\n       (data->set).expect_100_timeout <= tVar16)" (parenthesized_expression "((data->req).exp100 == EXP100_AWAITING_CONTINUE)" ( (binary_expression "(data->req).exp100 == EXP100_AWAITING_CONTINUE" (field_expression "(data->req).exp100" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) == identifier) )) && (parenthesized_expression "(tVar16 = Curl_timediff((data->req).now,(data->req).start100),\n       (data->set).expect_100_timeout <= tVar16)" ( (comma_expression "tVar16 = Curl_timediff((data->req).now,(data->req).start100),\n       (data->set).expect_100_timeout <= tVar16" (assignment_expression "tVar16 = Curl_timediff((data->req).now,(data->req).start100)" identifier = (call_expression "Curl_timediff((data->req).now,(data->req).start100)" identifier (argument_list "((data->req).now,(data->req).start100)" ( (field_expression "(data->req).now" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) , (field_expression "(data->req).start100" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) )))) , (binary_expression "(data->set).expect_100_timeout <= tVar16" (field_expression "(data->set).expect_100_timeout" (parenthesized_expression "(data->set)" ( (field_expression "data->set" identifier -> field_identifier) )) . field_identifier) <= identifier)) ))) )) (compound_statement "{\n      piVar2 = &(data->req).keepon;\n      *piVar2 = *piVar2 | 2;\n      (data->req).exp100 = EXP100_SEND_DATA;\n      Curl_expire_done(data,EXPIRE_100_TIMEOUT);\n      Curl_infof(data,"Done waiting for 100-continue\n");\n    }" { (expression_statement "piVar2 = &(data->req).keepon;" (assignment_expression "piVar2 = &(data->req).keepon" identifier = (pointer_expression "&(data->req).keepon" & (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*piVar2 = *piVar2 | 2;" (assignment_expression "*piVar2 = *piVar2 | 2" (pointer_expression "*piVar2" * identifier) = (binary_expression "*piVar2 | 2" (pointer_expression "*piVar2" * identifier) | number_literal)) ;) (expression_statement "(data->req).exp100 = EXP100_SEND_DATA;" (assignment_expression "(data->req).exp100 = EXP100_SEND_DATA" (field_expression "(data->req).exp100" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "Curl_expire_done(data,EXPIRE_100_TIMEOUT);" (call_expression "Curl_expire_done(data,EXPIRE_100_TIMEOUT)" identifier (argument_list "(data,EXPIRE_100_TIMEOUT)" ( identifier , identifier ))) ;) (expression_statement "Curl_infof(data,"Done waiting for 100-continue\n");" (call_expression "Curl_infof(data,"Done waiting for 100-continue\n")" identifier (argument_list "(data,"Done waiting for 100-continue\n")" ( identifier , (string_literal ""Done waiting for 100-continue\n"" " string_content escape_sequence ") ))) ;) }))) (labeled_statement "LAB_00039c69:\n    iVar24 = Curl_pgrsUpdate(conn);" statement_identifier : (expression_statement "iVar24 = Curl_pgrsUpdate(conn);" (assignment_expression "iVar24 = Curl_pgrsUpdate(conn)" identifier = (call_expression "Curl_pgrsUpdate(conn)" identifier (argument_list "(conn)" ( identifier )))) ;)) }) (else_clause "else {\n    readmore = false;\n    local_6c = 0;\n    *done = false;\n    local_60 = 100;\n    *comeback = false;\n    local_40 = 0;\n    do {\n      uVar14 = (data->set).buffer_size;\n      if (((conn->handler->protocol & 3) == 0) || (conn->httpversion != 0x14)) {\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        uVar26 = (uint)(data->req).size;\n        if (((uVar15 & uVar26) != 0xffffffff) &&\n           (((data->req).header == false &&\n            (pcVar4 = &(data->req).bytecount, uVar11 = uVar26 - (int)*pcVar4,\n            (int)((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4)) < (int)(uint)(uVar11 < uVar14))))) {\n          uVar14 = uVar11;\n        }\n      }\n      if (uVar14 != 0) {\n        CVar12 = Curl_read(conn,conn->sockfd,(data->req).buf,uVar14,&nread);\n        if (CVar12 != CURLE_AGAIN) {\n          if (CVar12 == CURLE_OK) {\n            if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0)\n               && (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n                   (int)(data->req).writebytecount == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        local_5c = local_6c;\n        uVar14 = (data->req).keepon;\nLAB_0003a00e:\n        if (local_60 != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      nread = 0;\n      if (*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) {\n        if (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n            (int)(data->req).writebytecount == 0) {\nLAB_00039f9b:\n          Curl_pgrsTime(data,TIMER_STARTTRANSFER);\n          if ((data->req).exp100 != EXP100_SEND_DATA) {\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n          }\n        }\nLAB_000399eb:\n        if (nread == 0) goto LAB_00039f28;\n        if (nread < 1) goto LAB_0003a030;\n        local_6c = 0;\n        iVar24 = nread;\n      }\n      else {\nLAB_00039f28:\n        if ((data->req).bodywrites != 0) {\nLAB_0003a030:\n          uVar14 = (data->req).keepon & 0xfffffffe;\n          (data->req).keepon = uVar14;\n          goto LAB_0003a00e;\n        }\n        iVar24 = 0;\n        local_6c = local_5c;\n      }\n      (data->req).buf[iVar24] = '\0';\n      (data->req).str = (data->req).buf;\n      p_Var13 = conn->handler->readwrite;\n      if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0) {\n        CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n        if (CVar12 == CURLE_OK) {\n          if (readmore == false) goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = (data->req).keepon;\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if ((data->req).header != false) {\n        stop_reading = false;\n        CVar12 = Curl_http_readwrite_headers(data,conn,&nread,&stop_reading);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        p_Var13 = conn->handler->readwrite;\n        if (((p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n            && ((int)(uint)((int)(data->req).maxdownload != 0) <=\n                -*(int *)((int)&(data->req).maxdownload + 4))) && (0 < nread)) {\n          CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          if (readmore != false) goto LAB_0003a008;\n        }\n        if (stop_reading == false) {\n          if (((data->req).str != (char *)0x0) && ((data->req).header == false)) goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < nread) {\n          _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n          if (_Var9) {\n            Curl_infof(data,"Rewinding stream by : %zd bytes on url %s (zero-length body)\n",nread,\n                       (data->state).up.path);\n            (conn->bits).stream_was_rewound = true;\n            conn->read_pos = conn->read_pos - nread;\n          }\n          else {\n            Curl_infof(data,\n                       "Excess found in a non pipelined read: excess = %zd url = %s (zero-length body)\n"\n                       ,nread,(data->state).up.path);\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if ((data->req).str == (char *)0x0) {\nLAB_00039df2:\n        pCVar22 = conn->handler;\nLAB_00039df8:\n        p_Var13 = pCVar22->readwrite;\n        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0) {\nLAB_00039dff:\n          if ((local_40 != 0) && ((conn->bits).stream_was_rewound == false)) {\n            pcVar17 = (data->req).buf + (data->set).buffer_size;\n            pcVar23 = (data->req).str + nread;\n            (data->req).str = pcVar23;\n            nread = (int)pcVar17 - (int)pcVar23;\n            if (pcVar23 + local_40 <= pcVar17) {\n              nread = local_40;\n            }\n            CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n            if (CVar12 == CURLE_OK) {\n              uVar14 = (data->req).keepon;\n              if (readmore != false) {\n                uVar14 = uVar14 | 1;\n                (data->req).keepon = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = (data->req).keepon;\n        if (local_6c != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          (data->req).keepon = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < nread) || (local_6c != 0)) {\n          if ((data->set).opt_no_body != false) {\n            CVar12 = CURLE_WEIRD_SERVER_REPLY;\n            Curl_conncontrol(conn,2);\n            *done = true;\n            goto LAB_00039d70;\n          }\n          iVar24 = (data->req).bodywrites;\n          if (local_6c == 0 && iVar24 == 0) {\n            if ((conn->handler->protocol & 0x40003) == 0) {\n              iVar24 = 0;\n            }\n            else {\n              if ((data->req).newurl != (char *)0x0) {\n                if ((conn->bits).close != false) {\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }\n                (data->req).ignorebody = true;\n                Curl_infof(data,"Ignoring the response-body\n");\n              }\n              iVar24 = *(int *)((int)&(data->state).resume_from + 4);\n              iVar20 = (int)(data->state).resume_from;\n              if ((((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false)) {\n                if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)) {\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }\n                else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }\n                goto LAB_00039d70;\n              }\n              if ((((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)) &&\n                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)) {\n                *done = true;\n                (data->info).httpcode = 0x130;\n                Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);\n                Curl_conncontrol(conn,1);\n                goto LAB_00039e7c;\n              }\n              iVar24 = (data->req).bodywrites;\n            }\n          }\n          _Var9 = (data->set).verbose;\n          (data->req).bodywrites = iVar24 + 1;\n          if (_Var9 == false) {\nLAB_0003a05d:\n            if ((data->req).chunk != false) {\nLAB_0003a280:\n              code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread);\n              if (CHUNKE_OK < code) {\n                if (code == CHUNKE_WRITE_ERROR) {\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }\n                else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }\n                goto LAB_00039d70;\n              }\n              if (code == CHUNKE_STOP) {\n                sVar18 = (conn->chunk).dataleft;\n                piVar2 = &(data->req).keepon;\n                *piVar2 = *piVar2 & 0xfffffffe;\n                if (sVar18 != 0) {\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }\n              }\n            }\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n            if (((data->req).badheader == CURLDIGESTALGO_MD5SESS) &&\n               ((data->req).ignorebody == false)) {\n              uVar14 = (data->req).hbuflen;\n              bVar25 = CARRY4(local_54,uVar14);\n              local_54 = local_54 + uVar14;\n              local_50 = local_50 + (uint)bVar25;\n              *(uint *)&(data->req).bytecount = local_54;\n              *(int *)((int)&(data->req).bytecount + 4) = local_50;\n            }\n          }\n          else {\n            if (((data->req).badheader == CURLDIGESTALGO_MD5) ||\n               (Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),\n               (data->req).badheader == CURLDIGESTALGO_MD5SESS)) {\n              Curl_debug(data,CURLINFO_DATA_IN,(data->req).str,nread);\n              goto LAB_0003a05d;\n            }\n            if ((data->req).chunk != false) goto LAB_0003a280;\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n          }\n          uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n          local_4c = (uint)(data->req).maxdownload;\n          uVar15 = nread + local_54;\n          local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n          if (((uVar14 & local_4c) != 0xffffffff) &&\n             ((SBORROW4(local_48,uVar14) != SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c)))\n              == (int)((local_48 - uVar14) - (uint)(uVar15 < local_4c)) < 0)) {\n            iVar24 = nread + local_54;\n            local_40 = iVar24 - local_4c;\n            if ((local_40 != 0) && ((data->req).ignorebody == false)) {\n              _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n              if (_Var9) {\n                Curl_infof(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread);\n                (conn->bits).stream_was_rewound = true;\n                conn->read_pos = conn->read_pos + (local_4c - iVar24);\n              }\n              else {\n                Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4));\n              }\n              local_4c = (uint)(data->req).maxdownload;\n              local_50 = *(int *)((int)&(data->req).bytecount + 4);\n              local_54 = (uint)(data->req).bytecount;\n            }\n            nread = local_4c - local_54;\n            if (nread < 0) {\n              nread = 0;\n              local_4c = local_54;\n              local_48 = local_50;\n            }\n            else {\n              local_4c = nread + local_54;\n              local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n            }\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffe;\n            uVar15 = local_4c;\n          }\n          local_4c = uVar15;\n          *(uint *)&(data->req).bytecount = local_4c;\n          *(int *)((int)&(data->req).bytecount + 4) = local_48;\n          Curl_pgrsSetDownloadCounter(data,CONCAT44(local_48,local_4c));\n          if ((data->req).chunk != false) goto LAB_00039df2;\n          aVar21 = (data->req).badheader;\n          if ((nread == 0 && aVar21 == CURLDIGESTALGO_MD5) && local_6c == 0) goto LAB_0003a318;\n          cVar10 = (data->req).ignorebody;\n          if (aVar21 == CURLDIGESTALGO_MD5) {\nLAB_0003a358:\n            if (((conn->data->set).http_ce_skip == false) &&\n               (writer = (data->req).writer_stack, writer != (contenc_writer *)0x0)) {\n              if (cVar10 == '\0') {\n                CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            pCVar22 = conn->handler;\n            if (cVar10 == '\0') {\n              pcVar17 = (data->req).str;\n              if ((pCVar22->protocol & 0xc000) == 0) {\n                CVar12 = Curl_client_write(conn,1,pcVar17,nread);\n              }\n              else {\n                CVar12 = Curl_pop3_write(conn,pcVar17,nread);\n              }\nLAB_0003a392:\n              (data->req).badheader = CURLDIGESTALGO_MD5;\n              if (CVar12 == CURLE_OK) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if ((_Bool)cVar10 == false) {\n              uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n              uVar15 = (uint)(data->req).maxdownload;\n              uVar26 = (data->req).hbuflen;\n              if (((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26)))\n              {\n                uVar26 = uVar15;\n              }\n              CVar12 = Curl_client_write(conn,1,(data->state).headerbuff,uVar26);\n              if (CVar12 != CURLE_OK) goto LAB_00039d70;\n              aVar21 = (data->req).badheader;\n            }\n            if ((uint)aVar21 < 2) {\n              cVar10 = (data->req).ignorebody;\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            pCVar22 = conn->handler;\n          }\n          (data->req).badheader = CURLDIGESTALGO_MD5;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        pCVar22 = conn->handler;\n        p_Var13 = pCVar22->readwrite;\n        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n        goto LAB_00039dff;\n        uVar14 = (data->req).keepon;\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((((pCVar22->protocol & 0x30) == 0) && (_Var9 = Curl_ssl_data_pending(conn,0), !_Var9)) &&\n         (((conn->handler->protocol & 3) == 0 || (conn->httpversion != 0x14)))) goto LAB_0003a008;\n      local_60 = local_60 + -1;\n      local_6c = local_5c;\n    } while (local_60 != -1);\n    uVar14 = (data->req).keepon;\nLAB_00039e5f:\n    conn->cselect_bits = 1;\n    *comeback = true;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && ((conn->bits).close != false)) {\n      Curl_infof(data,"we are done reading and this is set to close, stop send\n");\n      piVar2 = &(data->req).keepon;\n      *piVar2 = *piVar2 & 0xfffffffd;\n      if (*done != false) {\nLAB_0003a468:\n        CVar12 = CURLE_OK;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (*done != false) goto LAB_0003a468;\n      if ((((data->req).keepon & 2) != 0) && (((uint)local_74 & 2) != 0)) goto LAB_00039b2b;\n    }\nLAB_00039ea1:\n    Curl_now();\n    (data->req).now.tv_sec = local_34;\n    (data->req).now.tv_usec = iStack_30;\n    if (local_5c == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    pcVar4 = (data->req).bytecountp;\n    if (pcVar4 != (curl_off_t *)0x0) {\n      uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4);\n      *(int *)pcVar4 = (int)(data->req).bytecount;\n      *(undefined4 *)((int)pcVar4 + 4) = uVar5;\n    }\n    pcVar4 = (data->req).writebytecountp;\n    if (pcVar4 == (curl_off_t *)0x0) goto LAB_00039c69;\n    uVar5 = *(undefined4 *)((int)&(data->req).writebytecount + 4);\n    *(int *)pcVar4 = (int)(data->req).writebytecount;\n    *(undefined4 *)((int)pcVar4 + 4) = uVar5;\n    iVar24 = Curl_pgrsUpdate(conn);\n  }" else (compound_statement "{\n    readmore = false;\n    local_6c = 0;\n    *done = false;\n    local_60 = 100;\n    *comeback = false;\n    local_40 = 0;\n    do {\n      uVar14 = (data->set).buffer_size;\n      if (((conn->handler->protocol & 3) == 0) || (conn->httpversion != 0x14)) {\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        uVar26 = (uint)(data->req).size;\n        if (((uVar15 & uVar26) != 0xffffffff) &&\n           (((data->req).header == false &&\n            (pcVar4 = &(data->req).bytecount, uVar11 = uVar26 - (int)*pcVar4,\n            (int)((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4)) < (int)(uint)(uVar11 < uVar14))))) {\n          uVar14 = uVar11;\n        }\n      }\n      if (uVar14 != 0) {\n        CVar12 = Curl_read(conn,conn->sockfd,(data->req).buf,uVar14,&nread);\n        if (CVar12 != CURLE_AGAIN) {\n          if (CVar12 == CURLE_OK) {\n            if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0)\n               && (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n                   (int)(data->req).writebytecount == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        local_5c = local_6c;\n        uVar14 = (data->req).keepon;\nLAB_0003a00e:\n        if (local_60 != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      nread = 0;\n      if (*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) {\n        if (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n            (int)(data->req).writebytecount == 0) {\nLAB_00039f9b:\n          Curl_pgrsTime(data,TIMER_STARTTRANSFER);\n          if ((data->req).exp100 != EXP100_SEND_DATA) {\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n          }\n        }\nLAB_000399eb:\n        if (nread == 0) goto LAB_00039f28;\n        if (nread < 1) goto LAB_0003a030;\n        local_6c = 0;\n        iVar24 = nread;\n      }\n      else {\nLAB_00039f28:\n        if ((data->req).bodywrites != 0) {\nLAB_0003a030:\n          uVar14 = (data->req).keepon & 0xfffffffe;\n          (data->req).keepon = uVar14;\n          goto LAB_0003a00e;\n        }\n        iVar24 = 0;\n        local_6c = local_5c;\n      }\n      (data->req).buf[iVar24] = '\0';\n      (data->req).str = (data->req).buf;\n      p_Var13 = conn->handler->readwrite;\n      if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0) {\n        CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n        if (CVar12 == CURLE_OK) {\n          if (readmore == false) goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = (data->req).keepon;\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if ((data->req).header != false) {\n        stop_reading = false;\n        CVar12 = Curl_http_readwrite_headers(data,conn,&nread,&stop_reading);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        p_Var13 = conn->handler->readwrite;\n        if (((p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n            && ((int)(uint)((int)(data->req).maxdownload != 0) <=\n                -*(int *)((int)&(data->req).maxdownload + 4))) && (0 < nread)) {\n          CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          if (readmore != false) goto LAB_0003a008;\n        }\n        if (stop_reading == false) {\n          if (((data->req).str != (char *)0x0) && ((data->req).header == false)) goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < nread) {\n          _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n          if (_Var9) {\n            Curl_infof(data,"Rewinding stream by : %zd bytes on url %s (zero-length body)\n",nread,\n                       (data->state).up.path);\n            (conn->bits).stream_was_rewound = true;\n            conn->read_pos = conn->read_pos - nread;\n          }\n          else {\n            Curl_infof(data,\n                       "Excess found in a non pipelined read: excess = %zd url = %s (zero-length body)\n"\n                       ,nread,(data->state).up.path);\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if ((data->req).str == (char *)0x0) {\nLAB_00039df2:\n        pCVar22 = conn->handler;\nLAB_00039df8:\n        p_Var13 = pCVar22->readwrite;\n        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0) {\nLAB_00039dff:\n          if ((local_40 != 0) && ((conn->bits).stream_was_rewound == false)) {\n            pcVar17 = (data->req).buf + (data->set).buffer_size;\n            pcVar23 = (data->req).str + nread;\n            (data->req).str = pcVar23;\n            nread = (int)pcVar17 - (int)pcVar23;\n            if (pcVar23 + local_40 <= pcVar17) {\n              nread = local_40;\n            }\n            CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n            if (CVar12 == CURLE_OK) {\n              uVar14 = (data->req).keepon;\n              if (readmore != false) {\n                uVar14 = uVar14 | 1;\n                (data->req).keepon = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = (data->req).keepon;\n        if (local_6c != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          (data->req).keepon = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < nread) || (local_6c != 0)) {\n          if ((data->set).opt_no_body != false) {\n            CVar12 = CURLE_WEIRD_SERVER_REPLY;\n            Curl_conncontrol(conn,2);\n            *done = true;\n            goto LAB_00039d70;\n          }\n          iVar24 = (data->req).bodywrites;\n          if (local_6c == 0 && iVar24 == 0) {\n            if ((conn->handler->protocol & 0x40003) == 0) {\n              iVar24 = 0;\n            }\n            else {\n              if ((data->req).newurl != (char *)0x0) {\n                if ((conn->bits).close != false) {\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }\n                (data->req).ignorebody = true;\n                Curl_infof(data,"Ignoring the response-body\n");\n              }\n              iVar24 = *(int *)((int)&(data->state).resume_from + 4);\n              iVar20 = (int)(data->state).resume_from;\n              if ((((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false)) {\n                if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)) {\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }\n                else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }\n                goto LAB_00039d70;\n              }\n              if ((((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)) &&\n                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)) {\n                *done = true;\n                (data->info).httpcode = 0x130;\n                Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);\n                Curl_conncontrol(conn,1);\n                goto LAB_00039e7c;\n              }\n              iVar24 = (data->req).bodywrites;\n            }\n          }\n          _Var9 = (data->set).verbose;\n          (data->req).bodywrites = iVar24 + 1;\n          if (_Var9 == false) {\nLAB_0003a05d:\n            if ((data->req).chunk != false) {\nLAB_0003a280:\n              code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread);\n              if (CHUNKE_OK < code) {\n                if (code == CHUNKE_WRITE_ERROR) {\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }\n                else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }\n                goto LAB_00039d70;\n              }\n              if (code == CHUNKE_STOP) {\n                sVar18 = (conn->chunk).dataleft;\n                piVar2 = &(data->req).keepon;\n                *piVar2 = *piVar2 & 0xfffffffe;\n                if (sVar18 != 0) {\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }\n              }\n            }\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n            if (((data->req).badheader == CURLDIGESTALGO_MD5SESS) &&\n               ((data->req).ignorebody == false)) {\n              uVar14 = (data->req).hbuflen;\n              bVar25 = CARRY4(local_54,uVar14);\n              local_54 = local_54 + uVar14;\n              local_50 = local_50 + (uint)bVar25;\n              *(uint *)&(data->req).bytecount = local_54;\n              *(int *)((int)&(data->req).bytecount + 4) = local_50;\n            }\n          }\n          else {\n            if (((data->req).badheader == CURLDIGESTALGO_MD5) ||\n               (Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),\n               (data->req).badheader == CURLDIGESTALGO_MD5SESS)) {\n              Curl_debug(data,CURLINFO_DATA_IN,(data->req).str,nread);\n              goto LAB_0003a05d;\n            }\n            if ((data->req).chunk != false) goto LAB_0003a280;\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n          }\n          uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n          local_4c = (uint)(data->req).maxdownload;\n          uVar15 = nread + local_54;\n          local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n          if (((uVar14 & local_4c) != 0xffffffff) &&\n             ((SBORROW4(local_48,uVar14) != SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c)))\n              == (int)((local_48 - uVar14) - (uint)(uVar15 < local_4c)) < 0)) {\n            iVar24 = nread + local_54;\n            local_40 = iVar24 - local_4c;\n            if ((local_40 != 0) && ((data->req).ignorebody == false)) {\n              _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n              if (_Var9) {\n                Curl_infof(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread);\n                (conn->bits).stream_was_rewound = true;\n                conn->read_pos = conn->read_pos + (local_4c - iVar24);\n              }\n              else {\n                Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4));\n              }\n              local_4c = (uint)(data->req).maxdownload;\n              local_50 = *(int *)((int)&(data->req).bytecount + 4);\n              local_54 = (uint)(data->req).bytecount;\n            }\n            nread = local_4c - local_54;\n            if (nread < 0) {\n              nread = 0;\n              local_4c = local_54;\n              local_48 = local_50;\n            }\n            else {\n              local_4c = nread + local_54;\n              local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n            }\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffe;\n            uVar15 = local_4c;\n          }\n          local_4c = uVar15;\n          *(uint *)&(data->req).bytecount = local_4c;\n          *(int *)((int)&(data->req).bytecount + 4) = local_48;\n          Curl_pgrsSetDownloadCounter(data,CONCAT44(local_48,local_4c));\n          if ((data->req).chunk != false) goto LAB_00039df2;\n          aVar21 = (data->req).badheader;\n          if ((nread == 0 && aVar21 == CURLDIGESTALGO_MD5) && local_6c == 0) goto LAB_0003a318;\n          cVar10 = (data->req).ignorebody;\n          if (aVar21 == CURLDIGESTALGO_MD5) {\nLAB_0003a358:\n            if (((conn->data->set).http_ce_skip == false) &&\n               (writer = (data->req).writer_stack, writer != (contenc_writer *)0x0)) {\n              if (cVar10 == '\0') {\n                CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            pCVar22 = conn->handler;\n            if (cVar10 == '\0') {\n              pcVar17 = (data->req).str;\n              if ((pCVar22->protocol & 0xc000) == 0) {\n                CVar12 = Curl_client_write(conn,1,pcVar17,nread);\n              }\n              else {\n                CVar12 = Curl_pop3_write(conn,pcVar17,nread);\n              }\nLAB_0003a392:\n              (data->req).badheader = CURLDIGESTALGO_MD5;\n              if (CVar12 == CURLE_OK) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if ((_Bool)cVar10 == false) {\n              uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n              uVar15 = (uint)(data->req).maxdownload;\n              uVar26 = (data->req).hbuflen;\n              if (((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26)))\n              {\n                uVar26 = uVar15;\n              }\n              CVar12 = Curl_client_write(conn,1,(data->state).headerbuff,uVar26);\n              if (CVar12 != CURLE_OK) goto LAB_00039d70;\n              aVar21 = (data->req).badheader;\n            }\n            if ((uint)aVar21 < 2) {\n              cVar10 = (data->req).ignorebody;\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            pCVar22 = conn->handler;\n          }\n          (data->req).badheader = CURLDIGESTALGO_MD5;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        pCVar22 = conn->handler;\n        p_Var13 = pCVar22->readwrite;\n        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n        goto LAB_00039dff;\n        uVar14 = (data->req).keepon;\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((((pCVar22->protocol & 0x30) == 0) && (_Var9 = Curl_ssl_data_pending(conn,0), !_Var9)) &&\n         (((conn->handler->protocol & 3) == 0 || (conn->httpversion != 0x14)))) goto LAB_0003a008;\n      local_60 = local_60 + -1;\n      local_6c = local_5c;\n    } while (local_60 != -1);\n    uVar14 = (data->req).keepon;\nLAB_00039e5f:\n    conn->cselect_bits = 1;\n    *comeback = true;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && ((conn->bits).close != false)) {\n      Curl_infof(data,"we are done reading and this is set to close, stop send\n");\n      piVar2 = &(data->req).keepon;\n      *piVar2 = *piVar2 & 0xfffffffd;\n      if (*done != false) {\nLAB_0003a468:\n        CVar12 = CURLE_OK;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (*done != false) goto LAB_0003a468;\n      if ((((data->req).keepon & 2) != 0) && (((uint)local_74 & 2) != 0)) goto LAB_00039b2b;\n    }\nLAB_00039ea1:\n    Curl_now();\n    (data->req).now.tv_sec = local_34;\n    (data->req).now.tv_usec = iStack_30;\n    if (local_5c == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    pcVar4 = (data->req).bytecountp;\n    if (pcVar4 != (curl_off_t *)0x0) {\n      uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4);\n      *(int *)pcVar4 = (int)(data->req).bytecount;\n      *(undefined4 *)((int)pcVar4 + 4) = uVar5;\n    }\n    pcVar4 = (data->req).writebytecountp;\n    if (pcVar4 == (curl_off_t *)0x0) goto LAB_00039c69;\n    uVar5 = *(undefined4 *)((int)&(data->req).writebytecount + 4);\n    *(int *)pcVar4 = (int)(data->req).writebytecount;\n    *(undefined4 *)((int)pcVar4 + 4) = uVar5;\n    iVar24 = Curl_pgrsUpdate(conn);\n  }" { (expression_statement "readmore = false;" (assignment_expression "readmore = false" identifier = false) ;) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (expression_statement "*done = false;" (assignment_expression "*done = false" (pointer_expression "*done" * identifier) = false) ;) (expression_statement "local_60 = 100;" (assignment_expression "local_60 = 100" identifier = number_literal) ;) (expression_statement "*comeback = false;" (assignment_expression "*comeback = false" (pointer_expression "*comeback" * identifier) = false) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (do_statement "do {\n      uVar14 = (data->set).buffer_size;\n      if (((conn->handler->protocol & 3) == 0) || (conn->httpversion != 0x14)) {\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        uVar26 = (uint)(data->req).size;\n        if (((uVar15 & uVar26) != 0xffffffff) &&\n           (((data->req).header == false &&\n            (pcVar4 = &(data->req).bytecount, uVar11 = uVar26 - (int)*pcVar4,\n            (int)((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4)) < (int)(uint)(uVar11 < uVar14))))) {\n          uVar14 = uVar11;\n        }\n      }\n      if (uVar14 != 0) {\n        CVar12 = Curl_read(conn,conn->sockfd,(data->req).buf,uVar14,&nread);\n        if (CVar12 != CURLE_AGAIN) {\n          if (CVar12 == CURLE_OK) {\n            if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0)\n               && (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n                   (int)(data->req).writebytecount == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        local_5c = local_6c;\n        uVar14 = (data->req).keepon;\nLAB_0003a00e:\n        if (local_60 != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      nread = 0;\n      if (*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) {\n        if (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n            (int)(data->req).writebytecount == 0) {\nLAB_00039f9b:\n          Curl_pgrsTime(data,TIMER_STARTTRANSFER);\n          if ((data->req).exp100 != EXP100_SEND_DATA) {\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n          }\n        }\nLAB_000399eb:\n        if (nread == 0) goto LAB_00039f28;\n        if (nread < 1) goto LAB_0003a030;\n        local_6c = 0;\n        iVar24 = nread;\n      }\n      else {\nLAB_00039f28:\n        if ((data->req).bodywrites != 0) {\nLAB_0003a030:\n          uVar14 = (data->req).keepon & 0xfffffffe;\n          (data->req).keepon = uVar14;\n          goto LAB_0003a00e;\n        }\n        iVar24 = 0;\n        local_6c = local_5c;\n      }\n      (data->req).buf[iVar24] = '\0';\n      (data->req).str = (data->req).buf;\n      p_Var13 = conn->handler->readwrite;\n      if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0) {\n        CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n        if (CVar12 == CURLE_OK) {\n          if (readmore == false) goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = (data->req).keepon;\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if ((data->req).header != false) {\n        stop_reading = false;\n        CVar12 = Curl_http_readwrite_headers(data,conn,&nread,&stop_reading);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        p_Var13 = conn->handler->readwrite;\n        if (((p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n            && ((int)(uint)((int)(data->req).maxdownload != 0) <=\n                -*(int *)((int)&(data->req).maxdownload + 4))) && (0 < nread)) {\n          CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          if (readmore != false) goto LAB_0003a008;\n        }\n        if (stop_reading == false) {\n          if (((data->req).str != (char *)0x0) && ((data->req).header == false)) goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < nread) {\n          _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n          if (_Var9) {\n            Curl_infof(data,"Rewinding stream by : %zd bytes on url %s (zero-length body)\n",nread,\n                       (data->state).up.path);\n            (conn->bits).stream_was_rewound = true;\n            conn->read_pos = conn->read_pos - nread;\n          }\n          else {\n            Curl_infof(data,\n                       "Excess found in a non pipelined read: excess = %zd url = %s (zero-length body)\n"\n                       ,nread,(data->state).up.path);\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if ((data->req).str == (char *)0x0) {\nLAB_00039df2:\n        pCVar22 = conn->handler;\nLAB_00039df8:\n        p_Var13 = pCVar22->readwrite;\n        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0) {\nLAB_00039dff:\n          if ((local_40 != 0) && ((conn->bits).stream_was_rewound == false)) {\n            pcVar17 = (data->req).buf + (data->set).buffer_size;\n            pcVar23 = (data->req).str + nread;\n            (data->req).str = pcVar23;\n            nread = (int)pcVar17 - (int)pcVar23;\n            if (pcVar23 + local_40 <= pcVar17) {\n              nread = local_40;\n            }\n            CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n            if (CVar12 == CURLE_OK) {\n              uVar14 = (data->req).keepon;\n              if (readmore != false) {\n                uVar14 = uVar14 | 1;\n                (data->req).keepon = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = (data->req).keepon;\n        if (local_6c != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          (data->req).keepon = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < nread) || (local_6c != 0)) {\n          if ((data->set).opt_no_body != false) {\n            CVar12 = CURLE_WEIRD_SERVER_REPLY;\n            Curl_conncontrol(conn,2);\n            *done = true;\n            goto LAB_00039d70;\n          }\n          iVar24 = (data->req).bodywrites;\n          if (local_6c == 0 && iVar24 == 0) {\n            if ((conn->handler->protocol & 0x40003) == 0) {\n              iVar24 = 0;\n            }\n            else {\n              if ((data->req).newurl != (char *)0x0) {\n                if ((conn->bits).close != false) {\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }\n                (data->req).ignorebody = true;\n                Curl_infof(data,"Ignoring the response-body\n");\n              }\n              iVar24 = *(int *)((int)&(data->state).resume_from + 4);\n              iVar20 = (int)(data->state).resume_from;\n              if ((((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false)) {\n                if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)) {\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }\n                else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }\n                goto LAB_00039d70;\n              }\n              if ((((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)) &&\n                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)) {\n                *done = true;\n                (data->info).httpcode = 0x130;\n                Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);\n                Curl_conncontrol(conn,1);\n                goto LAB_00039e7c;\n              }\n              iVar24 = (data->req).bodywrites;\n            }\n          }\n          _Var9 = (data->set).verbose;\n          (data->req).bodywrites = iVar24 + 1;\n          if (_Var9 == false) {\nLAB_0003a05d:\n            if ((data->req).chunk != false) {\nLAB_0003a280:\n              code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread);\n              if (CHUNKE_OK < code) {\n                if (code == CHUNKE_WRITE_ERROR) {\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }\n                else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }\n                goto LAB_00039d70;\n              }\n              if (code == CHUNKE_STOP) {\n                sVar18 = (conn->chunk).dataleft;\n                piVar2 = &(data->req).keepon;\n                *piVar2 = *piVar2 & 0xfffffffe;\n                if (sVar18 != 0) {\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }\n              }\n            }\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n            if (((data->req).badheader == CURLDIGESTALGO_MD5SESS) &&\n               ((data->req).ignorebody == false)) {\n              uVar14 = (data->req).hbuflen;\n              bVar25 = CARRY4(local_54,uVar14);\n              local_54 = local_54 + uVar14;\n              local_50 = local_50 + (uint)bVar25;\n              *(uint *)&(data->req).bytecount = local_54;\n              *(int *)((int)&(data->req).bytecount + 4) = local_50;\n            }\n          }\n          else {\n            if (((data->req).badheader == CURLDIGESTALGO_MD5) ||\n               (Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),\n               (data->req).badheader == CURLDIGESTALGO_MD5SESS)) {\n              Curl_debug(data,CURLINFO_DATA_IN,(data->req).str,nread);\n              goto LAB_0003a05d;\n            }\n            if ((data->req).chunk != false) goto LAB_0003a280;\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n          }\n          uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n          local_4c = (uint)(data->req).maxdownload;\n          uVar15 = nread + local_54;\n          local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n          if (((uVar14 & local_4c) != 0xffffffff) &&\n             ((SBORROW4(local_48,uVar14) != SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c)))\n              == (int)((local_48 - uVar14) - (uint)(uVar15 < local_4c)) < 0)) {\n            iVar24 = nread + local_54;\n            local_40 = iVar24 - local_4c;\n            if ((local_40 != 0) && ((data->req).ignorebody == false)) {\n              _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n              if (_Var9) {\n                Curl_infof(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread);\n                (conn->bits).stream_was_rewound = true;\n                conn->read_pos = conn->read_pos + (local_4c - iVar24);\n              }\n              else {\n                Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4));\n              }\n              local_4c = (uint)(data->req).maxdownload;\n              local_50 = *(int *)((int)&(data->req).bytecount + 4);\n              local_54 = (uint)(data->req).bytecount;\n            }\n            nread = local_4c - local_54;\n            if (nread < 0) {\n              nread = 0;\n              local_4c = local_54;\n              local_48 = local_50;\n            }\n            else {\n              local_4c = nread + local_54;\n              local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n            }\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffe;\n            uVar15 = local_4c;\n          }\n          local_4c = uVar15;\n          *(uint *)&(data->req).bytecount = local_4c;\n          *(int *)((int)&(data->req).bytecount + 4) = local_48;\n          Curl_pgrsSetDownloadCounter(data,CONCAT44(local_48,local_4c));\n          if ((data->req).chunk != false) goto LAB_00039df2;\n          aVar21 = (data->req).badheader;\n          if ((nread == 0 && aVar21 == CURLDIGESTALGO_MD5) && local_6c == 0) goto LAB_0003a318;\n          cVar10 = (data->req).ignorebody;\n          if (aVar21 == CURLDIGESTALGO_MD5) {\nLAB_0003a358:\n            if (((conn->data->set).http_ce_skip == false) &&\n               (writer = (data->req).writer_stack, writer != (contenc_writer *)0x0)) {\n              if (cVar10 == '\0') {\n                CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            pCVar22 = conn->handler;\n            if (cVar10 == '\0') {\n              pcVar17 = (data->req).str;\n              if ((pCVar22->protocol & 0xc000) == 0) {\n                CVar12 = Curl_client_write(conn,1,pcVar17,nread);\n              }\n              else {\n                CVar12 = Curl_pop3_write(conn,pcVar17,nread);\n              }\nLAB_0003a392:\n              (data->req).badheader = CURLDIGESTALGO_MD5;\n              if (CVar12 == CURLE_OK) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if ((_Bool)cVar10 == false) {\n              uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n              uVar15 = (uint)(data->req).maxdownload;\n              uVar26 = (data->req).hbuflen;\n              if (((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26)))\n              {\n                uVar26 = uVar15;\n              }\n              CVar12 = Curl_client_write(conn,1,(data->state).headerbuff,uVar26);\n              if (CVar12 != CURLE_OK) goto LAB_00039d70;\n              aVar21 = (data->req).badheader;\n            }\n            if ((uint)aVar21 < 2) {\n              cVar10 = (data->req).ignorebody;\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            pCVar22 = conn->handler;\n          }\n          (data->req).badheader = CURLDIGESTALGO_MD5;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        pCVar22 = conn->handler;\n        p_Var13 = pCVar22->readwrite;\n        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n        goto LAB_00039dff;\n        uVar14 = (data->req).keepon;\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((((pCVar22->protocol & 0x30) == 0) && (_Var9 = Curl_ssl_data_pending(conn,0), !_Var9)) &&\n         (((conn->handler->protocol & 3) == 0 || (conn->httpversion != 0x14)))) goto LAB_0003a008;\n      local_60 = local_60 + -1;\n      local_6c = local_5c;\n    } while (local_60 != -1);" do (compound_statement "{\n      uVar14 = (data->set).buffer_size;\n      if (((conn->handler->protocol & 3) == 0) || (conn->httpversion != 0x14)) {\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        uVar26 = (uint)(data->req).size;\n        if (((uVar15 & uVar26) != 0xffffffff) &&\n           (((data->req).header == false &&\n            (pcVar4 = &(data->req).bytecount, uVar11 = uVar26 - (int)*pcVar4,\n            (int)((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4)) < (int)(uint)(uVar11 < uVar14))))) {\n          uVar14 = uVar11;\n        }\n      }\n      if (uVar14 != 0) {\n        CVar12 = Curl_read(conn,conn->sockfd,(data->req).buf,uVar14,&nread);\n        if (CVar12 != CURLE_AGAIN) {\n          if (CVar12 == CURLE_OK) {\n            if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0)\n               && (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n                   (int)(data->req).writebytecount == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        local_5c = local_6c;\n        uVar14 = (data->req).keepon;\nLAB_0003a00e:\n        if (local_60 != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      nread = 0;\n      if (*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) {\n        if (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n            (int)(data->req).writebytecount == 0) {\nLAB_00039f9b:\n          Curl_pgrsTime(data,TIMER_STARTTRANSFER);\n          if ((data->req).exp100 != EXP100_SEND_DATA) {\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n          }\n        }\nLAB_000399eb:\n        if (nread == 0) goto LAB_00039f28;\n        if (nread < 1) goto LAB_0003a030;\n        local_6c = 0;\n        iVar24 = nread;\n      }\n      else {\nLAB_00039f28:\n        if ((data->req).bodywrites != 0) {\nLAB_0003a030:\n          uVar14 = (data->req).keepon & 0xfffffffe;\n          (data->req).keepon = uVar14;\n          goto LAB_0003a00e;\n        }\n        iVar24 = 0;\n        local_6c = local_5c;\n      }\n      (data->req).buf[iVar24] = '\0';\n      (data->req).str = (data->req).buf;\n      p_Var13 = conn->handler->readwrite;\n      if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0) {\n        CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n        if (CVar12 == CURLE_OK) {\n          if (readmore == false) goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = (data->req).keepon;\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if ((data->req).header != false) {\n        stop_reading = false;\n        CVar12 = Curl_http_readwrite_headers(data,conn,&nread,&stop_reading);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        p_Var13 = conn->handler->readwrite;\n        if (((p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n            && ((int)(uint)((int)(data->req).maxdownload != 0) <=\n                -*(int *)((int)&(data->req).maxdownload + 4))) && (0 < nread)) {\n          CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          if (readmore != false) goto LAB_0003a008;\n        }\n        if (stop_reading == false) {\n          if (((data->req).str != (char *)0x0) && ((data->req).header == false)) goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < nread) {\n          _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n          if (_Var9) {\n            Curl_infof(data,"Rewinding stream by : %zd bytes on url %s (zero-length body)\n",nread,\n                       (data->state).up.path);\n            (conn->bits).stream_was_rewound = true;\n            conn->read_pos = conn->read_pos - nread;\n          }\n          else {\n            Curl_infof(data,\n                       "Excess found in a non pipelined read: excess = %zd url = %s (zero-length body)\n"\n                       ,nread,(data->state).up.path);\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if ((data->req).str == (char *)0x0) {\nLAB_00039df2:\n        pCVar22 = conn->handler;\nLAB_00039df8:\n        p_Var13 = pCVar22->readwrite;\n        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0) {\nLAB_00039dff:\n          if ((local_40 != 0) && ((conn->bits).stream_was_rewound == false)) {\n            pcVar17 = (data->req).buf + (data->set).buffer_size;\n            pcVar23 = (data->req).str + nread;\n            (data->req).str = pcVar23;\n            nread = (int)pcVar17 - (int)pcVar23;\n            if (pcVar23 + local_40 <= pcVar17) {\n              nread = local_40;\n            }\n            CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n            if (CVar12 == CURLE_OK) {\n              uVar14 = (data->req).keepon;\n              if (readmore != false) {\n                uVar14 = uVar14 | 1;\n                (data->req).keepon = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = (data->req).keepon;\n        if (local_6c != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          (data->req).keepon = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < nread) || (local_6c != 0)) {\n          if ((data->set).opt_no_body != false) {\n            CVar12 = CURLE_WEIRD_SERVER_REPLY;\n            Curl_conncontrol(conn,2);\n            *done = true;\n            goto LAB_00039d70;\n          }\n          iVar24 = (data->req).bodywrites;\n          if (local_6c == 0 && iVar24 == 0) {\n            if ((conn->handler->protocol & 0x40003) == 0) {\n              iVar24 = 0;\n            }\n            else {\n              if ((data->req).newurl != (char *)0x0) {\n                if ((conn->bits).close != false) {\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }\n                (data->req).ignorebody = true;\n                Curl_infof(data,"Ignoring the response-body\n");\n              }\n              iVar24 = *(int *)((int)&(data->state).resume_from + 4);\n              iVar20 = (int)(data->state).resume_from;\n              if ((((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false)) {\n                if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)) {\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }\n                else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }\n                goto LAB_00039d70;\n              }\n              if ((((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)) &&\n                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)) {\n                *done = true;\n                (data->info).httpcode = 0x130;\n                Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);\n                Curl_conncontrol(conn,1);\n                goto LAB_00039e7c;\n              }\n              iVar24 = (data->req).bodywrites;\n            }\n          }\n          _Var9 = (data->set).verbose;\n          (data->req).bodywrites = iVar24 + 1;\n          if (_Var9 == false) {\nLAB_0003a05d:\n            if ((data->req).chunk != false) {\nLAB_0003a280:\n              code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread);\n              if (CHUNKE_OK < code) {\n                if (code == CHUNKE_WRITE_ERROR) {\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }\n                else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }\n                goto LAB_00039d70;\n              }\n              if (code == CHUNKE_STOP) {\n                sVar18 = (conn->chunk).dataleft;\n                piVar2 = &(data->req).keepon;\n                *piVar2 = *piVar2 & 0xfffffffe;\n                if (sVar18 != 0) {\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }\n              }\n            }\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n            if (((data->req).badheader == CURLDIGESTALGO_MD5SESS) &&\n               ((data->req).ignorebody == false)) {\n              uVar14 = (data->req).hbuflen;\n              bVar25 = CARRY4(local_54,uVar14);\n              local_54 = local_54 + uVar14;\n              local_50 = local_50 + (uint)bVar25;\n              *(uint *)&(data->req).bytecount = local_54;\n              *(int *)((int)&(data->req).bytecount + 4) = local_50;\n            }\n          }\n          else {\n            if (((data->req).badheader == CURLDIGESTALGO_MD5) ||\n               (Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),\n               (data->req).badheader == CURLDIGESTALGO_MD5SESS)) {\n              Curl_debug(data,CURLINFO_DATA_IN,(data->req).str,nread);\n              goto LAB_0003a05d;\n            }\n            if ((data->req).chunk != false) goto LAB_0003a280;\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n          }\n          uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n          local_4c = (uint)(data->req).maxdownload;\n          uVar15 = nread + local_54;\n          local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n          if (((uVar14 & local_4c) != 0xffffffff) &&\n             ((SBORROW4(local_48,uVar14) != SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c)))\n              == (int)((local_48 - uVar14) - (uint)(uVar15 < local_4c)) < 0)) {\n            iVar24 = nread + local_54;\n            local_40 = iVar24 - local_4c;\n            if ((local_40 != 0) && ((data->req).ignorebody == false)) {\n              _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n              if (_Var9) {\n                Curl_infof(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread);\n                (conn->bits).stream_was_rewound = true;\n                conn->read_pos = conn->read_pos + (local_4c - iVar24);\n              }\n              else {\n                Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4));\n              }\n              local_4c = (uint)(data->req).maxdownload;\n              local_50 = *(int *)((int)&(data->req).bytecount + 4);\n              local_54 = (uint)(data->req).bytecount;\n            }\n            nread = local_4c - local_54;\n            if (nread < 0) {\n              nread = 0;\n              local_4c = local_54;\n              local_48 = local_50;\n            }\n            else {\n              local_4c = nread + local_54;\n              local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n            }\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffe;\n            uVar15 = local_4c;\n          }\n          local_4c = uVar15;\n          *(uint *)&(data->req).bytecount = local_4c;\n          *(int *)((int)&(data->req).bytecount + 4) = local_48;\n          Curl_pgrsSetDownloadCounter(data,CONCAT44(local_48,local_4c));\n          if ((data->req).chunk != false) goto LAB_00039df2;\n          aVar21 = (data->req).badheader;\n          if ((nread == 0 && aVar21 == CURLDIGESTALGO_MD5) && local_6c == 0) goto LAB_0003a318;\n          cVar10 = (data->req).ignorebody;\n          if (aVar21 == CURLDIGESTALGO_MD5) {\nLAB_0003a358:\n            if (((conn->data->set).http_ce_skip == false) &&\n               (writer = (data->req).writer_stack, writer != (contenc_writer *)0x0)) {\n              if (cVar10 == '\0') {\n                CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            pCVar22 = conn->handler;\n            if (cVar10 == '\0') {\n              pcVar17 = (data->req).str;\n              if ((pCVar22->protocol & 0xc000) == 0) {\n                CVar12 = Curl_client_write(conn,1,pcVar17,nread);\n              }\n              else {\n                CVar12 = Curl_pop3_write(conn,pcVar17,nread);\n              }\nLAB_0003a392:\n              (data->req).badheader = CURLDIGESTALGO_MD5;\n              if (CVar12 == CURLE_OK) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if ((_Bool)cVar10 == false) {\n              uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n              uVar15 = (uint)(data->req).maxdownload;\n              uVar26 = (data->req).hbuflen;\n              if (((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26)))\n              {\n                uVar26 = uVar15;\n              }\n              CVar12 = Curl_client_write(conn,1,(data->state).headerbuff,uVar26);\n              if (CVar12 != CURLE_OK) goto LAB_00039d70;\n              aVar21 = (data->req).badheader;\n            }\n            if ((uint)aVar21 < 2) {\n              cVar10 = (data->req).ignorebody;\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            pCVar22 = conn->handler;\n          }\n          (data->req).badheader = CURLDIGESTALGO_MD5;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        pCVar22 = conn->handler;\n        p_Var13 = pCVar22->readwrite;\n        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n        goto LAB_00039dff;\n        uVar14 = (data->req).keepon;\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((((pCVar22->protocol & 0x30) == 0) && (_Var9 = Curl_ssl_data_pending(conn,0), !_Var9)) &&\n         (((conn->handler->protocol & 3) == 0 || (conn->httpversion != 0x14)))) goto LAB_0003a008;\n      local_60 = local_60 + -1;\n      local_6c = local_5c;\n    }" { (expression_statement "uVar14 = (data->set).buffer_size;" (assignment_expression "uVar14 = (data->set).buffer_size" identifier = (field_expression "(data->set).buffer_size" (parenthesized_expression "(data->set)" ( (field_expression "data->set" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (((conn->handler->protocol & 3) == 0) || (conn->httpversion != 0x14)) {\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        uVar26 = (uint)(data->req).size;\n        if (((uVar15 & uVar26) != 0xffffffff) &&\n           (((data->req).header == false &&\n            (pcVar4 = &(data->req).bytecount, uVar11 = uVar26 - (int)*pcVar4,\n            (int)((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4)) < (int)(uint)(uVar11 < uVar14))))) {\n          uVar14 = uVar11;\n        }\n      }" if (parenthesized_expression "(((conn->handler->protocol & 3) == 0) || (conn->httpversion != 0x14))" ( (binary_expression "((conn->handler->protocol & 3) == 0) || (conn->httpversion != 0x14)" (parenthesized_expression "((conn->handler->protocol & 3) == 0)" ( (binary_expression "(conn->handler->protocol & 3) == 0" (parenthesized_expression "(conn->handler->protocol & 3)" ( (binary_expression "conn->handler->protocol & 3" (field_expression "conn->handler->protocol" (field_expression "conn->handler" identifier -> field_identifier) -> field_identifier) & number_literal) )) == number_literal) )) || (parenthesized_expression "(conn->httpversion != 0x14)" ( (binary_expression "conn->httpversion != 0x14" (field_expression "conn->httpversion" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        uVar26 = (uint)(data->req).size;\n        if (((uVar15 & uVar26) != 0xffffffff) &&\n           (((data->req).header == false &&\n            (pcVar4 = &(data->req).bytecount, uVar11 = uVar26 - (int)*pcVar4,\n            (int)((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4)) < (int)(uint)(uVar11 < uVar14))))) {\n          uVar14 = uVar11;\n        }\n      }" { (expression_statement "uVar15 = *(uint *)((int)&(data->req).size + 4);" (assignment_expression "uVar15 = *(uint *)((int)&(data->req).size + 4)" identifier = (pointer_expression "*(uint *)((int)&(data->req).size + 4)" * (cast_expression "(uint *)((int)&(data->req).size + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).size + 4)" ( (binary_expression "(int)&(data->req).size + 4" (cast_expression "(int)&(data->req).size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).size" & (field_expression "(data->req).size" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar26 = (uint)(data->req).size;" (assignment_expression "uVar26 = (uint)(data->req).size" identifier = (field_expression "(uint)(data->req).size" (call_expression "(uint)(data->req)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) ))) . field_identifier)) ;) (if_statement "if (((uVar15 & uVar26) != 0xffffffff) &&\n           (((data->req).header == false &&\n            (pcVar4 = &(data->req).bytecount, uVar11 = uVar26 - (int)*pcVar4,\n            (int)((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4)) < (int)(uint)(uVar11 < uVar14))))) {\n          uVar14 = uVar11;\n        }" if (parenthesized_expression "(((uVar15 & uVar26) != 0xffffffff) &&\n           (((data->req).header == false &&\n            (pcVar4 = &(data->req).bytecount, uVar11 = uVar26 - (int)*pcVar4,\n            (int)((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4)) < (int)(uint)(uVar11 < uVar14)))))" ( (binary_expression "((uVar15 & uVar26) != 0xffffffff) &&\n           (((data->req).header == false &&\n            (pcVar4 = &(data->req).bytecount, uVar11 = uVar26 - (int)*pcVar4,\n            (int)((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4)) < (int)(uint)(uVar11 < uVar14))))" (parenthesized_expression "((uVar15 & uVar26) != 0xffffffff)" ( (binary_expression "(uVar15 & uVar26) != 0xffffffff" (parenthesized_expression "(uVar15 & uVar26)" ( (binary_expression "uVar15 & uVar26" identifier & identifier) )) != number_literal) )) && (parenthesized_expression "(((data->req).header == false &&\n            (pcVar4 = &(data->req).bytecount, uVar11 = uVar26 - (int)*pcVar4,\n            (int)((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4)) < (int)(uint)(uVar11 < uVar14))))" ( (parenthesized_expression "((data->req).header == false &&\n            (pcVar4 = &(data->req).bytecount, uVar11 = uVar26 - (int)*pcVar4,\n            (int)((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4)) < (int)(uint)(uVar11 < uVar14)))" ( (binary_expression "(data->req).header == false &&\n            (pcVar4 = &(data->req).bytecount, uVar11 = uVar26 - (int)*pcVar4,\n            (int)((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4)) < (int)(uint)(uVar11 < uVar14))" (binary_expression "(data->req).header == false" (field_expression "(data->req).header" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) == false) && (parenthesized_expression "(pcVar4 = &(data->req).bytecount, uVar11 = uVar26 - (int)*pcVar4,\n            (int)((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4)) < (int)(uint)(uVar11 < uVar14))" ( (comma_expression "pcVar4 = &(data->req).bytecount, uVar11 = uVar26 - (int)*pcVar4,\n            (int)((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4)) < (int)(uint)(uVar11 < uVar14)" (assignment_expression "pcVar4 = &(data->req).bytecount" identifier = (pointer_expression "&(data->req).bytecount" & (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) , (comma_expression "uVar11 = uVar26 - (int)*pcVar4,\n            (int)((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4)) < (int)(uint)(uVar11 < uVar14)" (assignment_expression "uVar11 = uVar26 - (int)*pcVar4" identifier = (binary_expression "uVar26 - (int)*pcVar4" identifier - (cast_expression "(int)*pcVar4" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar4" * identifier)))) , (binary_expression "(int)((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4)) < (int)(uint)(uVar11 < uVar14)" (cast_expression "(int)((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4))" ( (binary_expression "(uVar15 - *(int *)((int)&(data->req).bytecount + 4)) -\n                 (uint)(uVar26 < (uint)*pcVar4)" (parenthesized_expression "(uVar15 - *(int *)((int)&(data->req).bytecount + 4))" ( (binary_expression "uVar15 - *(int *)((int)&(data->req).bytecount + 4)" identifier - (pointer_expression "*(int *)((int)&(data->req).bytecount + 4)" * (cast_expression "(int *)((int)&(data->req).bytecount + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).bytecount + 4)" ( (binary_expression "(int)&(data->req).bytecount + 4" (cast_expression "(int)&(data->req).bytecount" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).bytecount" & (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) )) - (call_expression "(uint)(uVar26 < (uint)*pcVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar26 < (uint)*pcVar4)" ( (binary_expression "uVar26 < (uint)*pcVar4" identifier < (binary_expression "(uint)*pcVar4" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))) ))) < (cast_expression "(int)(uint)(uVar11 < uVar14)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(uVar11 < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar11 < uVar14)" ( (binary_expression "uVar11 < uVar14" identifier < identifier) ))))))) ))) )) ))) )) (compound_statement "{\n          uVar14 = uVar11;\n        }" { (expression_statement "uVar14 = uVar11;" (assignment_expression "uVar14 = uVar11" identifier = identifier) ;) })) })) (if_statement "if (uVar14 != 0) {\n        CVar12 = Curl_read(conn,conn->sockfd,(data->req).buf,uVar14,&nread);\n        if (CVar12 != CURLE_AGAIN) {\n          if (CVar12 == CURLE_OK) {\n            if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0)\n               && (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n                   (int)(data->req).writebytecount == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        local_5c = local_6c;\n        uVar14 = (data->req).keepon;\nLAB_0003a00e:\n        if (local_60 != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }" if (parenthesized_expression "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) )) (compound_statement "{\n        CVar12 = Curl_read(conn,conn->sockfd,(data->req).buf,uVar14,&nread);\n        if (CVar12 != CURLE_AGAIN) {\n          if (CVar12 == CURLE_OK) {\n            if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0)\n               && (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n                   (int)(data->req).writebytecount == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        local_5c = local_6c;\n        uVar14 = (data->req).keepon;\nLAB_0003a00e:\n        if (local_60 != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }" { (expression_statement "CVar12 = Curl_read(conn,conn->sockfd,(data->req).buf,uVar14,&nread);" (assignment_expression "CVar12 = Curl_read(conn,conn->sockfd,(data->req).buf,uVar14,&nread)" identifier = (call_expression "Curl_read(conn,conn->sockfd,(data->req).buf,uVar14,&nread)" identifier (argument_list "(conn,conn->sockfd,(data->req).buf,uVar14,&nread)" ( identifier , (field_expression "conn->sockfd" identifier -> field_identifier) , (field_expression "(data->req).buf" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) , identifier , (pointer_expression "&nread" & identifier) )))) ;) (if_statement "if (CVar12 != CURLE_AGAIN) {\n          if (CVar12 == CURLE_OK) {\n            if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0)\n               && (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n                   (int)(data->req).writebytecount == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }" if (parenthesized_expression "(CVar12 != CURLE_AGAIN)" ( (binary_expression "CVar12 != CURLE_AGAIN" identifier != identifier) )) (compound_statement "{\n          if (CVar12 == CURLE_OK) {\n            if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0)\n               && (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n                   (int)(data->req).writebytecount == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }" { (if_statement "if (CVar12 == CURLE_OK) {\n            if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0)\n               && (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n                   (int)(data->req).writebytecount == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }" if (parenthesized_expression "(CVar12 == CURLE_OK)" ( (binary_expression "CVar12 == CURLE_OK" identifier == identifier) )) (compound_statement "{\n            if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0)\n               && (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n                   (int)(data->req).writebytecount == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }" { (if_statement "if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0)\n               && (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n                   (int)(data->req).writebytecount == 0)) goto LAB_00039f9b;" if (parenthesized_expression "((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0)\n               && (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n                   (int)(data->req).writebytecount == 0))" ( (binary_expression "(*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0)\n               && (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n                   (int)(data->req).writebytecount == 0)" (parenthesized_expression "(*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0)" ( (binary_expression "*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0" (binary_expression "*(int *)((int)&(data->req).bytecount + 4) == 0" (pointer_expression "*(int *)((int)&(data->req).bytecount + 4)" * (cast_expression "(int *)((int)&(data->req).bytecount + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).bytecount + 4)" ( (binary_expression "(int)&(data->req).bytecount + 4" (cast_expression "(int)&(data->req).bytecount" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).bytecount" & (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) == number_literal) && (binary_expression "(int)(data->req).bytecount == 0" (cast_expression "(int)(data->req).bytecount" ( (type_descriptor "int" primitive_type) ) (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) == number_literal)) )) && (parenthesized_expression "(*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n                   (int)(data->req).writebytecount == 0)" ( (binary_expression "*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n                   (int)(data->req).writebytecount == 0" (binary_expression "*(int *)((int)&(data->req).writebytecount + 4) == 0" (pointer_expression "*(int *)((int)&(data->req).writebytecount + 4)" * (cast_expression "(int *)((int)&(data->req).writebytecount + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).writebytecount + 4)" ( (binary_expression "(int)&(data->req).writebytecount + 4" (cast_expression "(int)&(data->req).writebytecount" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).writebytecount" & (field_expression "(data->req).writebytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) == number_literal) && (binary_expression "(int)(data->req).writebytecount == 0" (cast_expression "(int)(data->req).writebytecount" ( (type_descriptor "int" primitive_type) ) (field_expression "(data->req).writebytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) == number_literal)) ))) )) (goto_statement "goto LAB_00039f9b;" goto statement_identifier ;)) (goto_statement "goto LAB_000399eb;" goto statement_identifier ;) })) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (expression_statement "local_5c = local_6c;" (assignment_expression "local_5c = local_6c" identifier = identifier) ;) (expression_statement "uVar14 = (data->req).keepon;" (assignment_expression "uVar14 = (data->req).keepon" identifier = (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) (labeled_statement "LAB_0003a00e:\n        if (local_60 != 0) goto joined_r0x0003a020;" statement_identifier : (if_statement "if (local_60 != 0) goto joined_r0x0003a020;" if (parenthesized_expression "(local_60 != 0)" ( (binary_expression "local_60 != 0" identifier != number_literal) )) (goto_statement "goto joined_r0x0003a020;" goto statement_identifier ;))) (goto_statement "goto LAB_00039e5f;" goto statement_identifier ;) })) (expression_statement "nread = 0;" (assignment_expression "nread = 0" identifier = number_literal) ;) (if_statement "if (*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) {\n        if (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n            (int)(data->req).writebytecount == 0) {\nLAB_00039f9b:\n          Curl_pgrsTime(data,TIMER_STARTTRANSFER);\n          if ((data->req).exp100 != EXP100_SEND_DATA) {\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n          }\n        }\nLAB_000399eb:\n        if (nread == 0) goto LAB_00039f28;\n        if (nread < 1) goto LAB_0003a030;\n        local_6c = 0;\n        iVar24 = nread;\n      }\n      else {\nLAB_00039f28:\n        if ((data->req).bodywrites != 0) {\nLAB_0003a030:\n          uVar14 = (data->req).keepon & 0xfffffffe;\n          (data->req).keepon = uVar14;\n          goto LAB_0003a00e;\n        }\n        iVar24 = 0;\n        local_6c = local_5c;\n      }" if (parenthesized_expression "(*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0)" ( (binary_expression "*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0" (binary_expression "*(int *)((int)&(data->req).bytecount + 4) == 0" (pointer_expression "*(int *)((int)&(data->req).bytecount + 4)" * (cast_expression "(int *)((int)&(data->req).bytecount + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).bytecount + 4)" ( (binary_expression "(int)&(data->req).bytecount + 4" (cast_expression "(int)&(data->req).bytecount" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).bytecount" & (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) == number_literal) && (binary_expression "(int)(data->req).bytecount == 0" (cast_expression "(int)(data->req).bytecount" ( (type_descriptor "int" primitive_type) ) (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) == number_literal)) )) (compound_statement "{\n        if (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n            (int)(data->req).writebytecount == 0) {\nLAB_00039f9b:\n          Curl_pgrsTime(data,TIMER_STARTTRANSFER);\n          if ((data->req).exp100 != EXP100_SEND_DATA) {\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n          }\n        }\nLAB_000399eb:\n        if (nread == 0) goto LAB_00039f28;\n        if (nread < 1) goto LAB_0003a030;\n        local_6c = 0;\n        iVar24 = nread;\n      }" { (if_statement "if (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n            (int)(data->req).writebytecount == 0) {\nLAB_00039f9b:\n          Curl_pgrsTime(data,TIMER_STARTTRANSFER);\n          if ((data->req).exp100 != EXP100_SEND_DATA) {\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n          }\n        }" if (parenthesized_expression "(*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n            (int)(data->req).writebytecount == 0)" ( (binary_expression "*(int *)((int)&(data->req).writebytecount + 4) == 0 &&\n            (int)(data->req).writebytecount == 0" (binary_expression "*(int *)((int)&(data->req).writebytecount + 4) == 0" (pointer_expression "*(int *)((int)&(data->req).writebytecount + 4)" * (cast_expression "(int *)((int)&(data->req).writebytecount + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).writebytecount + 4)" ( (binary_expression "(int)&(data->req).writebytecount + 4" (cast_expression "(int)&(data->req).writebytecount" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).writebytecount" & (field_expression "(data->req).writebytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) == number_literal) && (binary_expression "(int)(data->req).writebytecount == 0" (cast_expression "(int)(data->req).writebytecount" ( (type_descriptor "int" primitive_type) ) (field_expression "(data->req).writebytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) == number_literal)) )) (compound_statement "{\nLAB_00039f9b:\n          Curl_pgrsTime(data,TIMER_STARTTRANSFER);\n          if ((data->req).exp100 != EXP100_SEND_DATA) {\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n          }\n        }" { (labeled_statement "LAB_00039f9b:\n          Curl_pgrsTime(data,TIMER_STARTTRANSFER);" statement_identifier : (expression_statement "Curl_pgrsTime(data,TIMER_STARTTRANSFER);" (call_expression "Curl_pgrsTime(data,TIMER_STARTTRANSFER)" identifier (argument_list "(data,TIMER_STARTTRANSFER)" ( identifier , identifier ))) ;)) (if_statement "if ((data->req).exp100 != EXP100_SEND_DATA) {\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n          }" if (parenthesized_expression "((data->req).exp100 != EXP100_SEND_DATA)" ( (binary_expression "(data->req).exp100 != EXP100_SEND_DATA" (field_expression "(data->req).exp100" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) != identifier) )) (compound_statement "{\n            Curl_now();\n            (data->req).start100.tv_sec = local_34;\n            (data->req).start100.tv_usec = iStack_30;\n          }" { (expression_statement "Curl_now();" (call_expression "Curl_now()" identifier (argument_list "()" ( ))) ;) (expression_statement "(data->req).start100.tv_sec = local_34;" (assignment_expression "(data->req).start100.tv_sec = local_34" (field_expression "(data->req).start100.tv_sec" (field_expression "(data->req).start100" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(data->req).start100.tv_usec = iStack_30;" (assignment_expression "(data->req).start100.tv_usec = iStack_30" (field_expression "(data->req).start100.tv_usec" (field_expression "(data->req).start100" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) })) })) (labeled_statement "LAB_000399eb:\n        if (nread == 0) goto LAB_00039f28;" statement_identifier : (if_statement "if (nread == 0) goto LAB_00039f28;" if (parenthesized_expression "(nread == 0)" ( (binary_expression "nread == 0" identifier == number_literal) )) (goto_statement "goto LAB_00039f28;" goto statement_identifier ;))) (if_statement "if (nread < 1) goto LAB_0003a030;" if (parenthesized_expression "(nread < 1)" ( (binary_expression "nread < 1" identifier < number_literal) )) (goto_statement "goto LAB_0003a030;" goto statement_identifier ;)) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (expression_statement "iVar24 = nread;" (assignment_expression "iVar24 = nread" identifier = identifier) ;) }) (else_clause "else {\nLAB_00039f28:\n        if ((data->req).bodywrites != 0) {\nLAB_0003a030:\n          uVar14 = (data->req).keepon & 0xfffffffe;\n          (data->req).keepon = uVar14;\n          goto LAB_0003a00e;\n        }\n        iVar24 = 0;\n        local_6c = local_5c;\n      }" else (compound_statement "{\nLAB_00039f28:\n        if ((data->req).bodywrites != 0) {\nLAB_0003a030:\n          uVar14 = (data->req).keepon & 0xfffffffe;\n          (data->req).keepon = uVar14;\n          goto LAB_0003a00e;\n        }\n        iVar24 = 0;\n        local_6c = local_5c;\n      }" { (labeled_statement "LAB_00039f28:\n        if ((data->req).bodywrites != 0) {\nLAB_0003a030:\n          uVar14 = (data->req).keepon & 0xfffffffe;\n          (data->req).keepon = uVar14;\n          goto LAB_0003a00e;\n        }" statement_identifier : (if_statement "if ((data->req).bodywrites != 0) {\nLAB_0003a030:\n          uVar14 = (data->req).keepon & 0xfffffffe;\n          (data->req).keepon = uVar14;\n          goto LAB_0003a00e;\n        }" if (parenthesized_expression "((data->req).bodywrites != 0)" ( (binary_expression "(data->req).bodywrites != 0" (field_expression "(data->req).bodywrites" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) != number_literal) )) (compound_statement "{\nLAB_0003a030:\n          uVar14 = (data->req).keepon & 0xfffffffe;\n          (data->req).keepon = uVar14;\n          goto LAB_0003a00e;\n        }" { (labeled_statement "LAB_0003a030:\n          uVar14 = (data->req).keepon & 0xfffffffe;" statement_identifier : (expression_statement "uVar14 = (data->req).keepon & 0xfffffffe;" (assignment_expression "uVar14 = (data->req).keepon & 0xfffffffe" identifier = (binary_expression "(data->req).keepon & 0xfffffffe" (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) & number_literal)) ;)) (expression_statement "(data->req).keepon = uVar14;" (assignment_expression "(data->req).keepon = uVar14" (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (goto_statement "goto LAB_0003a00e;" goto statement_identifier ;) }))) (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (expression_statement "local_6c = local_5c;" (assignment_expression "local_6c = local_5c" identifier = identifier) ;) }))) (expression_statement "(data->req).buf[iVar24] = '\0';" (assignment_expression "(data->req).buf[iVar24] = '\0'" (subscript_expression "(data->req).buf[iVar24]" (field_expression "(data->req).buf" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "(data->req).str = (data->req).buf;" (assignment_expression "(data->req).str = (data->req).buf" (field_expression "(data->req).str" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) = (field_expression "(data->req).buf" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "p_Var13 = conn->handler->readwrite;" (assignment_expression "p_Var13 = conn->handler->readwrite" identifier = (field_expression "conn->handler->readwrite" (field_expression "conn->handler" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0) {\n        CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n        if (CVar12 == CURLE_OK) {\n          if (readmore == false) goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = (data->req).keepon;\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }" if (parenthesized_expression "(p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)" ( (binary_expression "p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0" identifier != (cast_expression "(_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0" ( (type_descriptor "_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n        if (CVar12 == CURLE_OK) {\n          if (readmore == false) goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = (data->req).keepon;\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }" { (expression_statement "CVar12 = (*p_Var13)(data,conn,&nread,&readmore);" (assignment_expression "CVar12 = (*p_Var13)(data,conn,&nread,&readmore)" identifier = (call_expression "(*p_Var13)(data,conn,&nread,&readmore)" (parenthesized_expression "(*p_Var13)" ( (pointer_expression "*p_Var13" * identifier) )) (argument_list "(data,conn,&nread,&readmore)" ( identifier , identifier , (pointer_expression "&nread" & identifier) , (pointer_expression "&readmore" & identifier) )))) ;) (if_statement "if (CVar12 == CURLE_OK) {\n          if (readmore == false) goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = (data->req).keepon;\n          goto LAB_0003a00e;\n        }" if (parenthesized_expression "(CVar12 == CURLE_OK)" ( (binary_expression "CVar12 == CURLE_OK" identifier == identifier) )) (compound_statement "{\n          if (readmore == false) goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = (data->req).keepon;\n          goto LAB_0003a00e;\n        }" { (if_statement "if (readmore == false) goto LAB_00039a4c;" if (parenthesized_expression "(readmore == false)" ( (binary_expression "readmore == false" identifier == false) )) (goto_statement "goto LAB_00039a4c;" goto statement_identifier ;)) (labeled_statement "LAB_0003a008:\n          uVar14 = (data->req).keepon;" statement_identifier : (expression_statement "uVar14 = (data->req).keepon;" (assignment_expression "uVar14 = (data->req).keepon" identifier = (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;)) (goto_statement "goto LAB_0003a00e;" goto statement_identifier ;) })) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (labeled_statement "LAB_00039a4c:\n      if ((data->req).header != false) {\n        stop_reading = false;\n        CVar12 = Curl_http_readwrite_headers(data,conn,&nread,&stop_reading);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        p_Var13 = conn->handler->readwrite;\n        if (((p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n            && ((int)(uint)((int)(data->req).maxdownload != 0) <=\n                -*(int *)((int)&(data->req).maxdownload + 4))) && (0 < nread)) {\n          CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          if (readmore != false) goto LAB_0003a008;\n        }\n        if (stop_reading == false) {\n          if (((data->req).str != (char *)0x0) && ((data->req).header == false)) goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < nread) {\n          _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n          if (_Var9) {\n            Curl_infof(data,"Rewinding stream by : %zd bytes on url %s (zero-length body)\n",nread,\n                       (data->state).up.path);\n            (conn->bits).stream_was_rewound = true;\n            conn->read_pos = conn->read_pos - nread;\n          }\n          else {\n            Curl_infof(data,\n                       "Excess found in a non pipelined read: excess = %zd url = %s (zero-length body)\n"\n                       ,nread,(data->state).up.path);\n          }\n        }\n        goto LAB_0003a008;\n      }" statement_identifier : (if_statement "if ((data->req).header != false) {\n        stop_reading = false;\n        CVar12 = Curl_http_readwrite_headers(data,conn,&nread,&stop_reading);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        p_Var13 = conn->handler->readwrite;\n        if (((p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n            && ((int)(uint)((int)(data->req).maxdownload != 0) <=\n                -*(int *)((int)&(data->req).maxdownload + 4))) && (0 < nread)) {\n          CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          if (readmore != false) goto LAB_0003a008;\n        }\n        if (stop_reading == false) {\n          if (((data->req).str != (char *)0x0) && ((data->req).header == false)) goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < nread) {\n          _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n          if (_Var9) {\n            Curl_infof(data,"Rewinding stream by : %zd bytes on url %s (zero-length body)\n",nread,\n                       (data->state).up.path);\n            (conn->bits).stream_was_rewound = true;\n            conn->read_pos = conn->read_pos - nread;\n          }\n          else {\n            Curl_infof(data,\n                       "Excess found in a non pipelined read: excess = %zd url = %s (zero-length body)\n"\n                       ,nread,(data->state).up.path);\n          }\n        }\n        goto LAB_0003a008;\n      }" if (parenthesized_expression "((data->req).header != false)" ( (binary_expression "(data->req).header != false" (field_expression "(data->req).header" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) != false) )) (compound_statement "{\n        stop_reading = false;\n        CVar12 = Curl_http_readwrite_headers(data,conn,&nread,&stop_reading);\n        if (CVar12 != CURLE_OK) goto LAB_00039d70;\n        p_Var13 = conn->handler->readwrite;\n        if (((p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n            && ((int)(uint)((int)(data->req).maxdownload != 0) <=\n                -*(int *)((int)&(data->req).maxdownload + 4))) && (0 < nread)) {\n          CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          if (readmore != false) goto LAB_0003a008;\n        }\n        if (stop_reading == false) {\n          if (((data->req).str != (char *)0x0) && ((data->req).header == false)) goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < nread) {\n          _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n          if (_Var9) {\n            Curl_infof(data,"Rewinding stream by : %zd bytes on url %s (zero-length body)\n",nread,\n                       (data->state).up.path);\n            (conn->bits).stream_was_rewound = true;\n            conn->read_pos = conn->read_pos - nread;\n          }\n          else {\n            Curl_infof(data,\n                       "Excess found in a non pipelined read: excess = %zd url = %s (zero-length body)\n"\n                       ,nread,(data->state).up.path);\n          }\n        }\n        goto LAB_0003a008;\n      }" { (expression_statement "stop_reading = false;" (assignment_expression "stop_reading = false" identifier = false) ;) (expression_statement "CVar12 = Curl_http_readwrite_headers(data,conn,&nread,&stop_reading);" (assignment_expression "CVar12 = Curl_http_readwrite_headers(data,conn,&nread,&stop_reading)" identifier = (call_expression "Curl_http_readwrite_headers(data,conn,&nread,&stop_reading)" identifier (argument_list "(data,conn,&nread,&stop_reading)" ( identifier , identifier , (pointer_expression "&nread" & identifier) , (pointer_expression "&stop_reading" & identifier) )))) ;) (if_statement "if (CVar12 != CURLE_OK) goto LAB_00039d70;" if (parenthesized_expression "(CVar12 != CURLE_OK)" ( (binary_expression "CVar12 != CURLE_OK" identifier != identifier) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (expression_statement "p_Var13 = conn->handler->readwrite;" (assignment_expression "p_Var13 = conn->handler->readwrite" identifier = (field_expression "conn->handler->readwrite" (field_expression "conn->handler" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (((p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n            && ((int)(uint)((int)(data->req).maxdownload != 0) <=\n                -*(int *)((int)&(data->req).maxdownload + 4))) && (0 < nread)) {\n          CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          if (readmore != false) goto LAB_0003a008;\n        }" if (parenthesized_expression "(((p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n            && ((int)(uint)((int)(data->req).maxdownload != 0) <=\n                -*(int *)((int)&(data->req).maxdownload + 4))) && (0 < nread))" ( (binary_expression "((p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n            && ((int)(uint)((int)(data->req).maxdownload != 0) <=\n                -*(int *)((int)&(data->req).maxdownload + 4))) && (0 < nread)" (parenthesized_expression "((p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n            && ((int)(uint)((int)(data->req).maxdownload != 0) <=\n                -*(int *)((int)&(data->req).maxdownload + 4)))" ( (binary_expression "(p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n            && ((int)(uint)((int)(data->req).maxdownload != 0) <=\n                -*(int *)((int)&(data->req).maxdownload + 4))" (parenthesized_expression "(p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)" ( (binary_expression "p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0" identifier != (cast_expression "(_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0" ( (type_descriptor "_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((int)(uint)((int)(data->req).maxdownload != 0) <=\n                -*(int *)((int)&(data->req).maxdownload + 4))" ( (binary_expression "(int)(uint)((int)(data->req).maxdownload != 0) <=\n                -*(int *)((int)&(data->req).maxdownload + 4)" (cast_expression "(int)(uint)((int)(data->req).maxdownload != 0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)((int)(data->req).maxdownload != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)(data->req).maxdownload != 0)" ( (binary_expression "(int)(data->req).maxdownload != 0" (cast_expression "(int)(data->req).maxdownload" ( (type_descriptor "int" primitive_type) ) (field_expression "(data->req).maxdownload" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) != number_literal) )))) <= (unary_expression "-*(int *)((int)&(data->req).maxdownload + 4)" - (pointer_expression "*(int *)((int)&(data->req).maxdownload + 4)" * (cast_expression "(int *)((int)&(data->req).maxdownload + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).maxdownload + 4)" ( (binary_expression "(int)&(data->req).maxdownload + 4" (cast_expression "(int)&(data->req).maxdownload" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).maxdownload" & (field_expression "(data->req).maxdownload" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))))) ))) )) && (parenthesized_expression "(0 < nread)" ( (binary_expression "0 < nread" number_literal < identifier) ))) )) (compound_statement "{\n          CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n          if (CVar12 != CURLE_OK) goto LAB_00039d70;\n          if (readmore != false) goto LAB_0003a008;\n        }" { (expression_statement "CVar12 = (*p_Var13)(data,conn,&nread,&readmore);" (assignment_expression "CVar12 = (*p_Var13)(data,conn,&nread,&readmore)" identifier = (call_expression "(*p_Var13)(data,conn,&nread,&readmore)" (parenthesized_expression "(*p_Var13)" ( (pointer_expression "*p_Var13" * identifier) )) (argument_list "(data,conn,&nread,&readmore)" ( identifier , identifier , (pointer_expression "&nread" & identifier) , (pointer_expression "&readmore" & identifier) )))) ;) (if_statement "if (CVar12 != CURLE_OK) goto LAB_00039d70;" if (parenthesized_expression "(CVar12 != CURLE_OK)" ( (binary_expression "CVar12 != CURLE_OK" identifier != identifier) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (if_statement "if (readmore != false) goto LAB_0003a008;" if (parenthesized_expression "(readmore != false)" ( (binary_expression "readmore != false" identifier != false) )) (goto_statement "goto LAB_0003a008;" goto statement_identifier ;)) })) (if_statement "if (stop_reading == false) {\n          if (((data->req).str != (char *)0x0) && ((data->req).header == false)) goto LAB_00039a67;\n          goto LAB_00039df2;\n        }" if (parenthesized_expression "(stop_reading == false)" ( (binary_expression "stop_reading == false" identifier == false) )) (compound_statement "{\n          if (((data->req).str != (char *)0x0) && ((data->req).header == false)) goto LAB_00039a67;\n          goto LAB_00039df2;\n        }" { (if_statement "if (((data->req).str != (char *)0x0) && ((data->req).header == false)) goto LAB_00039a67;" if (parenthesized_expression "(((data->req).str != (char *)0x0) && ((data->req).header == false))" ( (binary_expression "((data->req).str != (char *)0x0) && ((data->req).header == false)" (parenthesized_expression "((data->req).str != (char *)0x0)" ( (binary_expression "(data->req).str != (char *)0x0" (field_expression "(data->req).str" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((data->req).header == false)" ( (binary_expression "(data->req).header == false" (field_expression "(data->req).header" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) == false) ))) )) (goto_statement "goto LAB_00039a67;" goto statement_identifier ;)) (goto_statement "goto LAB_00039df2;" goto statement_identifier ;) })) (if_statement "if (0 < nread) {\n          _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n          if (_Var9) {\n            Curl_infof(data,"Rewinding stream by : %zd bytes on url %s (zero-length body)\n",nread,\n                       (data->state).up.path);\n            (conn->bits).stream_was_rewound = true;\n            conn->read_pos = conn->read_pos - nread;\n          }\n          else {\n            Curl_infof(data,\n                       "Excess found in a non pipelined read: excess = %zd url = %s (zero-length body)\n"\n                       ,nread,(data->state).up.path);\n          }\n        }" if (parenthesized_expression "(0 < nread)" ( (binary_expression "0 < nread" number_literal < identifier) )) (compound_statement "{\n          _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n          if (_Var9) {\n            Curl_infof(data,"Rewinding stream by : %zd bytes on url %s (zero-length body)\n",nread,\n                       (data->state).up.path);\n            (conn->bits).stream_was_rewound = true;\n            conn->read_pos = conn->read_pos - nread;\n          }\n          else {\n            Curl_infof(data,\n                       "Excess found in a non pipelined read: excess = %zd url = %s (zero-length body)\n"\n                       ,nread,(data->state).up.path);\n          }\n        }" { (expression_statement "_Var9 = Curl_pipeline_wanted(conn->data->multi,1);" (assignment_expression "_Var9 = Curl_pipeline_wanted(conn->data->multi,1)" identifier = (call_expression "Curl_pipeline_wanted(conn->data->multi,1)" identifier (argument_list "(conn->data->multi,1)" ( (field_expression "conn->data->multi" (field_expression "conn->data" identifier -> field_identifier) -> field_identifier) , number_literal )))) ;) (if_statement "if (_Var9) {\n            Curl_infof(data,"Rewinding stream by : %zd bytes on url %s (zero-length body)\n",nread,\n                       (data->state).up.path);\n            (conn->bits).stream_was_rewound = true;\n            conn->read_pos = conn->read_pos - nread;\n          }\n          else {\n            Curl_infof(data,\n                       "Excess found in a non pipelined read: excess = %zd url = %s (zero-length body)\n"\n                       ,nread,(data->state).up.path);\n          }" if (parenthesized_expression "(_Var9)" ( identifier )) (compound_statement "{\n            Curl_infof(data,"Rewinding stream by : %zd bytes on url %s (zero-length body)\n",nread,\n                       (data->state).up.path);\n            (conn->bits).stream_was_rewound = true;\n            conn->read_pos = conn->read_pos - nread;\n          }" { (expression_statement "Curl_infof(data,"Rewinding stream by : %zd bytes on url %s (zero-length body)\n",nread,\n                       (data->state).up.path);" (call_expression "Curl_infof(data,"Rewinding stream by : %zd bytes on url %s (zero-length body)\n",nread,\n                       (data->state).up.path)" identifier (argument_list "(data,"Rewinding stream by : %zd bytes on url %s (zero-length body)\n",nread,\n                       (data->state).up.path)" ( identifier , (string_literal ""Rewinding stream by : %zd bytes on url %s (zero-length body)\n"" " string_content escape_sequence ") , identifier , (field_expression "(data->state).up.path" (field_expression "(data->state).up" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier) . field_identifier) ))) ;) (expression_statement "(conn->bits).stream_was_rewound = true;" (assignment_expression "(conn->bits).stream_was_rewound = true" (field_expression "(conn->bits).stream_was_rewound" (parenthesized_expression "(conn->bits)" ( (field_expression "conn->bits" identifier -> field_identifier) )) . field_identifier) = true) ;) (expression_statement "conn->read_pos = conn->read_pos - nread;" (assignment_expression "conn->read_pos = conn->read_pos - nread" (field_expression "conn->read_pos" identifier -> field_identifier) = (binary_expression "conn->read_pos - nread" (field_expression "conn->read_pos" identifier -> field_identifier) - identifier)) ;) }) (else_clause "else {\n            Curl_infof(data,\n                       "Excess found in a non pipelined read: excess = %zd url = %s (zero-length body)\n"\n                       ,nread,(data->state).up.path);\n          }" else (compound_statement "{\n            Curl_infof(data,\n                       "Excess found in a non pipelined read: excess = %zd url = %s (zero-length body)\n"\n                       ,nread,(data->state).up.path);\n          }" { (expression_statement "Curl_infof(data,\n                       "Excess found in a non pipelined read: excess = %zd url = %s (zero-length body)\n"\n                       ,nread,(data->state).up.path);" (call_expression "Curl_infof(data,\n                       "Excess found in a non pipelined read: excess = %zd url = %s (zero-length body)\n"\n                       ,nread,(data->state).up.path)" identifier (argument_list "(data,\n                       "Excess found in a non pipelined read: excess = %zd url = %s (zero-length body)\n"\n                       ,nread,(data->state).up.path)" ( identifier , (string_literal ""Excess found in a non pipelined read: excess = %zd url = %s (zero-length body)\n"" " string_content escape_sequence ") , identifier , (field_expression "(data->state).up.path" (field_expression "(data->state).up" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier) . field_identifier) ))) ;) }))) })) (goto_statement "goto LAB_0003a008;" goto statement_identifier ;) }))) (if_statement "if ((data->req).str == (char *)0x0) {\nLAB_00039df2:\n        pCVar22 = conn->handler;\nLAB_00039df8:\n        p_Var13 = pCVar22->readwrite;\n        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0) {\nLAB_00039dff:\n          if ((local_40 != 0) && ((conn->bits).stream_was_rewound == false)) {\n            pcVar17 = (data->req).buf + (data->set).buffer_size;\n            pcVar23 = (data->req).str + nread;\n            (data->req).str = pcVar23;\n            nread = (int)pcVar17 - (int)pcVar23;\n            if (pcVar23 + local_40 <= pcVar17) {\n              nread = local_40;\n            }\n            CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n            if (CVar12 == CURLE_OK) {\n              uVar14 = (data->req).keepon;\n              if (readmore != false) {\n                uVar14 = uVar14 | 1;\n                (data->req).keepon = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = (data->req).keepon;\n        if (local_6c != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          (data->req).keepon = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < nread) || (local_6c != 0)) {\n          if ((data->set).opt_no_body != false) {\n            CVar12 = CURLE_WEIRD_SERVER_REPLY;\n            Curl_conncontrol(conn,2);\n            *done = true;\n            goto LAB_00039d70;\n          }\n          iVar24 = (data->req).bodywrites;\n          if (local_6c == 0 && iVar24 == 0) {\n            if ((conn->handler->protocol & 0x40003) == 0) {\n              iVar24 = 0;\n            }\n            else {\n              if ((data->req).newurl != (char *)0x0) {\n                if ((conn->bits).close != false) {\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }\n                (data->req).ignorebody = true;\n                Curl_infof(data,"Ignoring the response-body\n");\n              }\n              iVar24 = *(int *)((int)&(data->state).resume_from + 4);\n              iVar20 = (int)(data->state).resume_from;\n              if ((((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false)) {\n                if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)) {\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }\n                else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }\n                goto LAB_00039d70;\n              }\n              if ((((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)) &&\n                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)) {\n                *done = true;\n                (data->info).httpcode = 0x130;\n                Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);\n                Curl_conncontrol(conn,1);\n                goto LAB_00039e7c;\n              }\n              iVar24 = (data->req).bodywrites;\n            }\n          }\n          _Var9 = (data->set).verbose;\n          (data->req).bodywrites = iVar24 + 1;\n          if (_Var9 == false) {\nLAB_0003a05d:\n            if ((data->req).chunk != false) {\nLAB_0003a280:\n              code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread);\n              if (CHUNKE_OK < code) {\n                if (code == CHUNKE_WRITE_ERROR) {\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }\n                else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }\n                goto LAB_00039d70;\n              }\n              if (code == CHUNKE_STOP) {\n                sVar18 = (conn->chunk).dataleft;\n                piVar2 = &(data->req).keepon;\n                *piVar2 = *piVar2 & 0xfffffffe;\n                if (sVar18 != 0) {\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }\n              }\n            }\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n            if (((data->req).badheader == CURLDIGESTALGO_MD5SESS) &&\n               ((data->req).ignorebody == false)) {\n              uVar14 = (data->req).hbuflen;\n              bVar25 = CARRY4(local_54,uVar14);\n              local_54 = local_54 + uVar14;\n              local_50 = local_50 + (uint)bVar25;\n              *(uint *)&(data->req).bytecount = local_54;\n              *(int *)((int)&(data->req).bytecount + 4) = local_50;\n            }\n          }\n          else {\n            if (((data->req).badheader == CURLDIGESTALGO_MD5) ||\n               (Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),\n               (data->req).badheader == CURLDIGESTALGO_MD5SESS)) {\n              Curl_debug(data,CURLINFO_DATA_IN,(data->req).str,nread);\n              goto LAB_0003a05d;\n            }\n            if ((data->req).chunk != false) goto LAB_0003a280;\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n          }\n          uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n          local_4c = (uint)(data->req).maxdownload;\n          uVar15 = nread + local_54;\n          local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n          if (((uVar14 & local_4c) != 0xffffffff) &&\n             ((SBORROW4(local_48,uVar14) != SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c)))\n              == (int)((local_48 - uVar14) - (uint)(uVar15 < local_4c)) < 0)) {\n            iVar24 = nread + local_54;\n            local_40 = iVar24 - local_4c;\n            if ((local_40 != 0) && ((data->req).ignorebody == false)) {\n              _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n              if (_Var9) {\n                Curl_infof(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread);\n                (conn->bits).stream_was_rewound = true;\n                conn->read_pos = conn->read_pos + (local_4c - iVar24);\n              }\n              else {\n                Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4));\n              }\n              local_4c = (uint)(data->req).maxdownload;\n              local_50 = *(int *)((int)&(data->req).bytecount + 4);\n              local_54 = (uint)(data->req).bytecount;\n            }\n            nread = local_4c - local_54;\n            if (nread < 0) {\n              nread = 0;\n              local_4c = local_54;\n              local_48 = local_50;\n            }\n            else {\n              local_4c = nread + local_54;\n              local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n            }\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffe;\n            uVar15 = local_4c;\n          }\n          local_4c = uVar15;\n          *(uint *)&(data->req).bytecount = local_4c;\n          *(int *)((int)&(data->req).bytecount + 4) = local_48;\n          Curl_pgrsSetDownloadCounter(data,CONCAT44(local_48,local_4c));\n          if ((data->req).chunk != false) goto LAB_00039df2;\n          aVar21 = (data->req).badheader;\n          if ((nread == 0 && aVar21 == CURLDIGESTALGO_MD5) && local_6c == 0) goto LAB_0003a318;\n          cVar10 = (data->req).ignorebody;\n          if (aVar21 == CURLDIGESTALGO_MD5) {\nLAB_0003a358:\n            if (((conn->data->set).http_ce_skip == false) &&\n               (writer = (data->req).writer_stack, writer != (contenc_writer *)0x0)) {\n              if (cVar10 == '\0') {\n                CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            pCVar22 = conn->handler;\n            if (cVar10 == '\0') {\n              pcVar17 = (data->req).str;\n              if ((pCVar22->protocol & 0xc000) == 0) {\n                CVar12 = Curl_client_write(conn,1,pcVar17,nread);\n              }\n              else {\n                CVar12 = Curl_pop3_write(conn,pcVar17,nread);\n              }\nLAB_0003a392:\n              (data->req).badheader = CURLDIGESTALGO_MD5;\n              if (CVar12 == CURLE_OK) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if ((_Bool)cVar10 == false) {\n              uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n              uVar15 = (uint)(data->req).maxdownload;\n              uVar26 = (data->req).hbuflen;\n              if (((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26)))\n              {\n                uVar26 = uVar15;\n              }\n              CVar12 = Curl_client_write(conn,1,(data->state).headerbuff,uVar26);\n              if (CVar12 != CURLE_OK) goto LAB_00039d70;\n              aVar21 = (data->req).badheader;\n            }\n            if ((uint)aVar21 < 2) {\n              cVar10 = (data->req).ignorebody;\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            pCVar22 = conn->handler;\n          }\n          (data->req).badheader = CURLDIGESTALGO_MD5;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        pCVar22 = conn->handler;\n        p_Var13 = pCVar22->readwrite;\n        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n        goto LAB_00039dff;\n        uVar14 = (data->req).keepon;\n      }" if (parenthesized_expression "((data->req).str == (char *)0x0)" ( (binary_expression "(data->req).str == (char *)0x0" (field_expression "(data->req).str" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00039df2:\n        pCVar22 = conn->handler;\nLAB_00039df8:\n        p_Var13 = pCVar22->readwrite;\n        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0) {\nLAB_00039dff:\n          if ((local_40 != 0) && ((conn->bits).stream_was_rewound == false)) {\n            pcVar17 = (data->req).buf + (data->set).buffer_size;\n            pcVar23 = (data->req).str + nread;\n            (data->req).str = pcVar23;\n            nread = (int)pcVar17 - (int)pcVar23;\n            if (pcVar23 + local_40 <= pcVar17) {\n              nread = local_40;\n            }\n            CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n            if (CVar12 == CURLE_OK) {\n              uVar14 = (data->req).keepon;\n              if (readmore != false) {\n                uVar14 = uVar14 | 1;\n                (data->req).keepon = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = (data->req).keepon;\n        if (local_6c != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          (data->req).keepon = uVar14;\n        }\n      }" { (labeled_statement "LAB_00039df2:\n        pCVar22 = conn->handler;" statement_identifier : (expression_statement "pCVar22 = conn->handler;" (assignment_expression "pCVar22 = conn->handler" identifier = (field_expression "conn->handler" identifier -> field_identifier)) ;)) (labeled_statement "LAB_00039df8:\n        p_Var13 = pCVar22->readwrite;" statement_identifier : (expression_statement "p_Var13 = pCVar22->readwrite;" (assignment_expression "p_Var13 = pCVar22->readwrite" identifier = (field_expression "pCVar22->readwrite" identifier -> field_identifier)) ;)) (if_statement "if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0) {\nLAB_00039dff:\n          if ((local_40 != 0) && ((conn->bits).stream_was_rewound == false)) {\n            pcVar17 = (data->req).buf + (data->set).buffer_size;\n            pcVar23 = (data->req).str + nread;\n            (data->req).str = pcVar23;\n            nread = (int)pcVar17 - (int)pcVar23;\n            if (pcVar23 + local_40 <= pcVar17) {\n              nread = local_40;\n            }\n            CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n            if (CVar12 == CURLE_OK) {\n              uVar14 = (data->req).keepon;\n              if (readmore != false) {\n                uVar14 = uVar14 | 1;\n                (data->req).keepon = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }" if (parenthesized_expression "(p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)" ( (binary_expression "p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0" identifier != (cast_expression "(_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0" ( (type_descriptor "_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00039dff:\n          if ((local_40 != 0) && ((conn->bits).stream_was_rewound == false)) {\n            pcVar17 = (data->req).buf + (data->set).buffer_size;\n            pcVar23 = (data->req).str + nread;\n            (data->req).str = pcVar23;\n            nread = (int)pcVar17 - (int)pcVar23;\n            if (pcVar23 + local_40 <= pcVar17) {\n              nread = local_40;\n            }\n            CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n            if (CVar12 == CURLE_OK) {\n              uVar14 = (data->req).keepon;\n              if (readmore != false) {\n                uVar14 = uVar14 | 1;\n                (data->req).keepon = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }" { (labeled_statement "LAB_00039dff:\n          if ((local_40 != 0) && ((conn->bits).stream_was_rewound == false)) {\n            pcVar17 = (data->req).buf + (data->set).buffer_size;\n            pcVar23 = (data->req).str + nread;\n            (data->req).str = pcVar23;\n            nread = (int)pcVar17 - (int)pcVar23;\n            if (pcVar23 + local_40 <= pcVar17) {\n              nread = local_40;\n            }\n            CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n            if (CVar12 == CURLE_OK) {\n              uVar14 = (data->req).keepon;\n              if (readmore != false) {\n                uVar14 = uVar14 | 1;\n                (data->req).keepon = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }" statement_identifier : (if_statement "if ((local_40 != 0) && ((conn->bits).stream_was_rewound == false)) {\n            pcVar17 = (data->req).buf + (data->set).buffer_size;\n            pcVar23 = (data->req).str + nread;\n            (data->req).str = pcVar23;\n            nread = (int)pcVar17 - (int)pcVar23;\n            if (pcVar23 + local_40 <= pcVar17) {\n              nread = local_40;\n            }\n            CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n            if (CVar12 == CURLE_OK) {\n              uVar14 = (data->req).keepon;\n              if (readmore != false) {\n                uVar14 = uVar14 | 1;\n                (data->req).keepon = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }" if (parenthesized_expression "((local_40 != 0) && ((conn->bits).stream_was_rewound == false))" ( (binary_expression "(local_40 != 0) && ((conn->bits).stream_was_rewound == false)" (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) && (parenthesized_expression "((conn->bits).stream_was_rewound == false)" ( (binary_expression "(conn->bits).stream_was_rewound == false" (field_expression "(conn->bits).stream_was_rewound" (parenthesized_expression "(conn->bits)" ( (field_expression "conn->bits" identifier -> field_identifier) )) . field_identifier) == false) ))) )) (compound_statement "{\n            pcVar17 = (data->req).buf + (data->set).buffer_size;\n            pcVar23 = (data->req).str + nread;\n            (data->req).str = pcVar23;\n            nread = (int)pcVar17 - (int)pcVar23;\n            if (pcVar23 + local_40 <= pcVar17) {\n              nread = local_40;\n            }\n            CVar12 = (*p_Var13)(data,conn,&nread,&readmore);\n            if (CVar12 == CURLE_OK) {\n              uVar14 = (data->req).keepon;\n              if (readmore != false) {\n                uVar14 = uVar14 | 1;\n                (data->req).keepon = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }" { (expression_statement "pcVar17 = (data->req).buf + (data->set).buffer_size;" (assignment_expression "pcVar17 = (data->req).buf + (data->set).buffer_size" identifier = (binary_expression "(data->req).buf + (data->set).buffer_size" (field_expression "(data->req).buf" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) + (field_expression "(data->set).buffer_size" (parenthesized_expression "(data->set)" ( (field_expression "data->set" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pcVar23 = (data->req).str + nread;" (assignment_expression "pcVar23 = (data->req).str + nread" identifier = (binary_expression "(data->req).str + nread" (field_expression "(data->req).str" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) + identifier)) ;) (expression_statement "(data->req).str = pcVar23;" (assignment_expression "(data->req).str = pcVar23" (field_expression "(data->req).str" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "nread = (int)pcVar17 - (int)pcVar23;" (assignment_expression "nread = (int)pcVar17 - (int)pcVar23" identifier = (binary_expression "(int)pcVar17 - (int)pcVar23" (cast_expression "(int)pcVar17" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar23" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (pcVar23 + local_40 <= pcVar17) {\n              nread = local_40;\n            }" if (parenthesized_expression "(pcVar23 + local_40 <= pcVar17)" ( (binary_expression "pcVar23 + local_40 <= pcVar17" (binary_expression "pcVar23 + local_40" identifier + identifier) <= identifier) )) (compound_statement "{\n              nread = local_40;\n            }" { (expression_statement "nread = local_40;" (assignment_expression "nread = local_40" identifier = identifier) ;) })) (expression_statement "CVar12 = (*p_Var13)(data,conn,&nread,&readmore);" (assignment_expression "CVar12 = (*p_Var13)(data,conn,&nread,&readmore)" identifier = (call_expression "(*p_Var13)(data,conn,&nread,&readmore)" (parenthesized_expression "(*p_Var13)" ( (pointer_expression "*p_Var13" * identifier) )) (argument_list "(data,conn,&nread,&readmore)" ( identifier , identifier , (pointer_expression "&nread" & identifier) , (pointer_expression "&readmore" & identifier) )))) ;) (if_statement "if (CVar12 == CURLE_OK) {\n              uVar14 = (data->req).keepon;\n              if (readmore != false) {\n                uVar14 = uVar14 | 1;\n                (data->req).keepon = uVar14;\n              }\n              goto LAB_0003a00e;\n            }" if (parenthesized_expression "(CVar12 == CURLE_OK)" ( (binary_expression "CVar12 == CURLE_OK" identifier == identifier) )) (compound_statement "{\n              uVar14 = (data->req).keepon;\n              if (readmore != false) {\n                uVar14 = uVar14 | 1;\n                (data->req).keepon = uVar14;\n              }\n              goto LAB_0003a00e;\n            }" { (expression_statement "uVar14 = (data->req).keepon;" (assignment_expression "uVar14 = (data->req).keepon" identifier = (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (readmore != false) {\n                uVar14 = uVar14 | 1;\n                (data->req).keepon = uVar14;\n              }" if (parenthesized_expression "(readmore != false)" ( (binary_expression "readmore != false" identifier != false) )) (compound_statement "{\n                uVar14 = uVar14 | 1;\n                (data->req).keepon = uVar14;\n              }" { (expression_statement "uVar14 = uVar14 | 1;" (assignment_expression "uVar14 = uVar14 | 1" identifier = (binary_expression "uVar14 | 1" identifier | number_literal)) ;) (expression_statement "(data->req).keepon = uVar14;" (assignment_expression "(data->req).keepon = uVar14" (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) = identifier) ;) })) (goto_statement "goto LAB_0003a00e;" goto statement_identifier ;) })) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) }))) })) (expression_statement "uVar14 = (data->req).keepon;" (assignment_expression "uVar14 = (data->req).keepon" identifier = (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (local_6c != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          (data->req).keepon = uVar14;\n        }" if (parenthesized_expression "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )) (compound_statement "{\n          uVar14 = uVar14 & 0xfffffffe;\n          (data->req).keepon = uVar14;\n        }" { (expression_statement "uVar14 = uVar14 & 0xfffffffe;" (assignment_expression "uVar14 = uVar14 & 0xfffffffe" identifier = (binary_expression "uVar14 & 0xfffffffe" identifier & number_literal)) ;) (expression_statement "(data->req).keepon = uVar14;" (assignment_expression "(data->req).keepon = uVar14" (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) = identifier) ;) })) }) (else_clause "else {\nLAB_00039a67:\n        if ((0 < nread) || (local_6c != 0)) {\n          if ((data->set).opt_no_body != false) {\n            CVar12 = CURLE_WEIRD_SERVER_REPLY;\n            Curl_conncontrol(conn,2);\n            *done = true;\n            goto LAB_00039d70;\n          }\n          iVar24 = (data->req).bodywrites;\n          if (local_6c == 0 && iVar24 == 0) {\n            if ((conn->handler->protocol & 0x40003) == 0) {\n              iVar24 = 0;\n            }\n            else {\n              if ((data->req).newurl != (char *)0x0) {\n                if ((conn->bits).close != false) {\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }\n                (data->req).ignorebody = true;\n                Curl_infof(data,"Ignoring the response-body\n");\n              }\n              iVar24 = *(int *)((int)&(data->state).resume_from + 4);\n              iVar20 = (int)(data->state).resume_from;\n              if ((((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false)) {\n                if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)) {\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }\n                else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }\n                goto LAB_00039d70;\n              }\n              if ((((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)) &&\n                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)) {\n                *done = true;\n                (data->info).httpcode = 0x130;\n                Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);\n                Curl_conncontrol(conn,1);\n                goto LAB_00039e7c;\n              }\n              iVar24 = (data->req).bodywrites;\n            }\n          }\n          _Var9 = (data->set).verbose;\n          (data->req).bodywrites = iVar24 + 1;\n          if (_Var9 == false) {\nLAB_0003a05d:\n            if ((data->req).chunk != false) {\nLAB_0003a280:\n              code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread);\n              if (CHUNKE_OK < code) {\n                if (code == CHUNKE_WRITE_ERROR) {\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }\n                else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }\n                goto LAB_00039d70;\n              }\n              if (code == CHUNKE_STOP) {\n                sVar18 = (conn->chunk).dataleft;\n                piVar2 = &(data->req).keepon;\n                *piVar2 = *piVar2 & 0xfffffffe;\n                if (sVar18 != 0) {\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }\n              }\n            }\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n            if (((data->req).badheader == CURLDIGESTALGO_MD5SESS) &&\n               ((data->req).ignorebody == false)) {\n              uVar14 = (data->req).hbuflen;\n              bVar25 = CARRY4(local_54,uVar14);\n              local_54 = local_54 + uVar14;\n              local_50 = local_50 + (uint)bVar25;\n              *(uint *)&(data->req).bytecount = local_54;\n              *(int *)((int)&(data->req).bytecount + 4) = local_50;\n            }\n          }\n          else {\n            if (((data->req).badheader == CURLDIGESTALGO_MD5) ||\n               (Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),\n               (data->req).badheader == CURLDIGESTALGO_MD5SESS)) {\n              Curl_debug(data,CURLINFO_DATA_IN,(data->req).str,nread);\n              goto LAB_0003a05d;\n            }\n            if ((data->req).chunk != false) goto LAB_0003a280;\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n          }\n          uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n          local_4c = (uint)(data->req).maxdownload;\n          uVar15 = nread + local_54;\n          local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n          if (((uVar14 & local_4c) != 0xffffffff) &&\n             ((SBORROW4(local_48,uVar14) != SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c)))\n              == (int)((local_48 - uVar14) - (uint)(uVar15 < local_4c)) < 0)) {\n            iVar24 = nread + local_54;\n            local_40 = iVar24 - local_4c;\n            if ((local_40 != 0) && ((data->req).ignorebody == false)) {\n              _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n              if (_Var9) {\n                Curl_infof(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread);\n                (conn->bits).stream_was_rewound = true;\n                conn->read_pos = conn->read_pos + (local_4c - iVar24);\n              }\n              else {\n                Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4));\n              }\n              local_4c = (uint)(data->req).maxdownload;\n              local_50 = *(int *)((int)&(data->req).bytecount + 4);\n              local_54 = (uint)(data->req).bytecount;\n            }\n            nread = local_4c - local_54;\n            if (nread < 0) {\n              nread = 0;\n              local_4c = local_54;\n              local_48 = local_50;\n            }\n            else {\n              local_4c = nread + local_54;\n              local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n            }\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffe;\n            uVar15 = local_4c;\n          }\n          local_4c = uVar15;\n          *(uint *)&(data->req).bytecount = local_4c;\n          *(int *)((int)&(data->req).bytecount + 4) = local_48;\n          Curl_pgrsSetDownloadCounter(data,CONCAT44(local_48,local_4c));\n          if ((data->req).chunk != false) goto LAB_00039df2;\n          aVar21 = (data->req).badheader;\n          if ((nread == 0 && aVar21 == CURLDIGESTALGO_MD5) && local_6c == 0) goto LAB_0003a318;\n          cVar10 = (data->req).ignorebody;\n          if (aVar21 == CURLDIGESTALGO_MD5) {\nLAB_0003a358:\n            if (((conn->data->set).http_ce_skip == false) &&\n               (writer = (data->req).writer_stack, writer != (contenc_writer *)0x0)) {\n              if (cVar10 == '\0') {\n                CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            pCVar22 = conn->handler;\n            if (cVar10 == '\0') {\n              pcVar17 = (data->req).str;\n              if ((pCVar22->protocol & 0xc000) == 0) {\n                CVar12 = Curl_client_write(conn,1,pcVar17,nread);\n              }\n              else {\n                CVar12 = Curl_pop3_write(conn,pcVar17,nread);\n              }\nLAB_0003a392:\n              (data->req).badheader = CURLDIGESTALGO_MD5;\n              if (CVar12 == CURLE_OK) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if ((_Bool)cVar10 == false) {\n              uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n              uVar15 = (uint)(data->req).maxdownload;\n              uVar26 = (data->req).hbuflen;\n              if (((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26)))\n              {\n                uVar26 = uVar15;\n              }\n              CVar12 = Curl_client_write(conn,1,(data->state).headerbuff,uVar26);\n              if (CVar12 != CURLE_OK) goto LAB_00039d70;\n              aVar21 = (data->req).badheader;\n            }\n            if ((uint)aVar21 < 2) {\n              cVar10 = (data->req).ignorebody;\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            pCVar22 = conn->handler;\n          }\n          (data->req).badheader = CURLDIGESTALGO_MD5;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        pCVar22 = conn->handler;\n        p_Var13 = pCVar22->readwrite;\n        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n        goto LAB_00039dff;\n        uVar14 = (data->req).keepon;\n      }" else (compound_statement "{\nLAB_00039a67:\n        if ((0 < nread) || (local_6c != 0)) {\n          if ((data->set).opt_no_body != false) {\n            CVar12 = CURLE_WEIRD_SERVER_REPLY;\n            Curl_conncontrol(conn,2);\n            *done = true;\n            goto LAB_00039d70;\n          }\n          iVar24 = (data->req).bodywrites;\n          if (local_6c == 0 && iVar24 == 0) {\n            if ((conn->handler->protocol & 0x40003) == 0) {\n              iVar24 = 0;\n            }\n            else {\n              if ((data->req).newurl != (char *)0x0) {\n                if ((conn->bits).close != false) {\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }\n                (data->req).ignorebody = true;\n                Curl_infof(data,"Ignoring the response-body\n");\n              }\n              iVar24 = *(int *)((int)&(data->state).resume_from + 4);\n              iVar20 = (int)(data->state).resume_from;\n              if ((((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false)) {\n                if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)) {\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }\n                else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }\n                goto LAB_00039d70;\n              }\n              if ((((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)) &&\n                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)) {\n                *done = true;\n                (data->info).httpcode = 0x130;\n                Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);\n                Curl_conncontrol(conn,1);\n                goto LAB_00039e7c;\n              }\n              iVar24 = (data->req).bodywrites;\n            }\n          }\n          _Var9 = (data->set).verbose;\n          (data->req).bodywrites = iVar24 + 1;\n          if (_Var9 == false) {\nLAB_0003a05d:\n            if ((data->req).chunk != false) {\nLAB_0003a280:\n              code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread);\n              if (CHUNKE_OK < code) {\n                if (code == CHUNKE_WRITE_ERROR) {\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }\n                else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }\n                goto LAB_00039d70;\n              }\n              if (code == CHUNKE_STOP) {\n                sVar18 = (conn->chunk).dataleft;\n                piVar2 = &(data->req).keepon;\n                *piVar2 = *piVar2 & 0xfffffffe;\n                if (sVar18 != 0) {\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }\n              }\n            }\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n            if (((data->req).badheader == CURLDIGESTALGO_MD5SESS) &&\n               ((data->req).ignorebody == false)) {\n              uVar14 = (data->req).hbuflen;\n              bVar25 = CARRY4(local_54,uVar14);\n              local_54 = local_54 + uVar14;\n              local_50 = local_50 + (uint)bVar25;\n              *(uint *)&(data->req).bytecount = local_54;\n              *(int *)((int)&(data->req).bytecount + 4) = local_50;\n            }\n          }\n          else {\n            if (((data->req).badheader == CURLDIGESTALGO_MD5) ||\n               (Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),\n               (data->req).badheader == CURLDIGESTALGO_MD5SESS)) {\n              Curl_debug(data,CURLINFO_DATA_IN,(data->req).str,nread);\n              goto LAB_0003a05d;\n            }\n            if ((data->req).chunk != false) goto LAB_0003a280;\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n          }\n          uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n          local_4c = (uint)(data->req).maxdownload;\n          uVar15 = nread + local_54;\n          local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n          if (((uVar14 & local_4c) != 0xffffffff) &&\n             ((SBORROW4(local_48,uVar14) != SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c)))\n              == (int)((local_48 - uVar14) - (uint)(uVar15 < local_4c)) < 0)) {\n            iVar24 = nread + local_54;\n            local_40 = iVar24 - local_4c;\n            if ((local_40 != 0) && ((data->req).ignorebody == false)) {\n              _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n              if (_Var9) {\n                Curl_infof(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread);\n                (conn->bits).stream_was_rewound = true;\n                conn->read_pos = conn->read_pos + (local_4c - iVar24);\n              }\n              else {\n                Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4));\n              }\n              local_4c = (uint)(data->req).maxdownload;\n              local_50 = *(int *)((int)&(data->req).bytecount + 4);\n              local_54 = (uint)(data->req).bytecount;\n            }\n            nread = local_4c - local_54;\n            if (nread < 0) {\n              nread = 0;\n              local_4c = local_54;\n              local_48 = local_50;\n            }\n            else {\n              local_4c = nread + local_54;\n              local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n            }\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffe;\n            uVar15 = local_4c;\n          }\n          local_4c = uVar15;\n          *(uint *)&(data->req).bytecount = local_4c;\n          *(int *)((int)&(data->req).bytecount + 4) = local_48;\n          Curl_pgrsSetDownloadCounter(data,CONCAT44(local_48,local_4c));\n          if ((data->req).chunk != false) goto LAB_00039df2;\n          aVar21 = (data->req).badheader;\n          if ((nread == 0 && aVar21 == CURLDIGESTALGO_MD5) && local_6c == 0) goto LAB_0003a318;\n          cVar10 = (data->req).ignorebody;\n          if (aVar21 == CURLDIGESTALGO_MD5) {\nLAB_0003a358:\n            if (((conn->data->set).http_ce_skip == false) &&\n               (writer = (data->req).writer_stack, writer != (contenc_writer *)0x0)) {\n              if (cVar10 == '\0') {\n                CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            pCVar22 = conn->handler;\n            if (cVar10 == '\0') {\n              pcVar17 = (data->req).str;\n              if ((pCVar22->protocol & 0xc000) == 0) {\n                CVar12 = Curl_client_write(conn,1,pcVar17,nread);\n              }\n              else {\n                CVar12 = Curl_pop3_write(conn,pcVar17,nread);\n              }\nLAB_0003a392:\n              (data->req).badheader = CURLDIGESTALGO_MD5;\n              if (CVar12 == CURLE_OK) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if ((_Bool)cVar10 == false) {\n              uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n              uVar15 = (uint)(data->req).maxdownload;\n              uVar26 = (data->req).hbuflen;\n              if (((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26)))\n              {\n                uVar26 = uVar15;\n              }\n              CVar12 = Curl_client_write(conn,1,(data->state).headerbuff,uVar26);\n              if (CVar12 != CURLE_OK) goto LAB_00039d70;\n              aVar21 = (data->req).badheader;\n            }\n            if ((uint)aVar21 < 2) {\n              cVar10 = (data->req).ignorebody;\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            pCVar22 = conn->handler;\n          }\n          (data->req).badheader = CURLDIGESTALGO_MD5;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        pCVar22 = conn->handler;\n        p_Var13 = pCVar22->readwrite;\n        if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n        goto LAB_00039dff;\n        uVar14 = (data->req).keepon;\n      }" { (labeled_statement "LAB_00039a67:\n        if ((0 < nread) || (local_6c != 0)) {\n          if ((data->set).opt_no_body != false) {\n            CVar12 = CURLE_WEIRD_SERVER_REPLY;\n            Curl_conncontrol(conn,2);\n            *done = true;\n            goto LAB_00039d70;\n          }\n          iVar24 = (data->req).bodywrites;\n          if (local_6c == 0 && iVar24 == 0) {\n            if ((conn->handler->protocol & 0x40003) == 0) {\n              iVar24 = 0;\n            }\n            else {\n              if ((data->req).newurl != (char *)0x0) {\n                if ((conn->bits).close != false) {\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }\n                (data->req).ignorebody = true;\n                Curl_infof(data,"Ignoring the response-body\n");\n              }\n              iVar24 = *(int *)((int)&(data->state).resume_from + 4);\n              iVar20 = (int)(data->state).resume_from;\n              if ((((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false)) {\n                if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)) {\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }\n                else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }\n                goto LAB_00039d70;\n              }\n              if ((((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)) &&\n                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)) {\n                *done = true;\n                (data->info).httpcode = 0x130;\n                Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);\n                Curl_conncontrol(conn,1);\n                goto LAB_00039e7c;\n              }\n              iVar24 = (data->req).bodywrites;\n            }\n          }\n          _Var9 = (data->set).verbose;\n          (data->req).bodywrites = iVar24 + 1;\n          if (_Var9 == false) {\nLAB_0003a05d:\n            if ((data->req).chunk != false) {\nLAB_0003a280:\n              code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread);\n              if (CHUNKE_OK < code) {\n                if (code == CHUNKE_WRITE_ERROR) {\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }\n                else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }\n                goto LAB_00039d70;\n              }\n              if (code == CHUNKE_STOP) {\n                sVar18 = (conn->chunk).dataleft;\n                piVar2 = &(data->req).keepon;\n                *piVar2 = *piVar2 & 0xfffffffe;\n                if (sVar18 != 0) {\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }\n              }\n            }\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n            if (((data->req).badheader == CURLDIGESTALGO_MD5SESS) &&\n               ((data->req).ignorebody == false)) {\n              uVar14 = (data->req).hbuflen;\n              bVar25 = CARRY4(local_54,uVar14);\n              local_54 = local_54 + uVar14;\n              local_50 = local_50 + (uint)bVar25;\n              *(uint *)&(data->req).bytecount = local_54;\n              *(int *)((int)&(data->req).bytecount + 4) = local_50;\n            }\n          }\n          else {\n            if (((data->req).badheader == CURLDIGESTALGO_MD5) ||\n               (Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),\n               (data->req).badheader == CURLDIGESTALGO_MD5SESS)) {\n              Curl_debug(data,CURLINFO_DATA_IN,(data->req).str,nread);\n              goto LAB_0003a05d;\n            }\n            if ((data->req).chunk != false) goto LAB_0003a280;\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n          }\n          uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n          local_4c = (uint)(data->req).maxdownload;\n          uVar15 = nread + local_54;\n          local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n          if (((uVar14 & local_4c) != 0xffffffff) &&\n             ((SBORROW4(local_48,uVar14) != SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c)))\n              == (int)((local_48 - uVar14) - (uint)(uVar15 < local_4c)) < 0)) {\n            iVar24 = nread + local_54;\n            local_40 = iVar24 - local_4c;\n            if ((local_40 != 0) && ((data->req).ignorebody == false)) {\n              _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n              if (_Var9) {\n                Curl_infof(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread);\n                (conn->bits).stream_was_rewound = true;\n                conn->read_pos = conn->read_pos + (local_4c - iVar24);\n              }\n              else {\n                Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4));\n              }\n              local_4c = (uint)(data->req).maxdownload;\n              local_50 = *(int *)((int)&(data->req).bytecount + 4);\n              local_54 = (uint)(data->req).bytecount;\n            }\n            nread = local_4c - local_54;\n            if (nread < 0) {\n              nread = 0;\n              local_4c = local_54;\n              local_48 = local_50;\n            }\n            else {\n              local_4c = nread + local_54;\n              local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n            }\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffe;\n            uVar15 = local_4c;\n          }\n          local_4c = uVar15;\n          *(uint *)&(data->req).bytecount = local_4c;\n          *(int *)((int)&(data->req).bytecount + 4) = local_48;\n          Curl_pgrsSetDownloadCounter(data,CONCAT44(local_48,local_4c));\n          if ((data->req).chunk != false) goto LAB_00039df2;\n          aVar21 = (data->req).badheader;\n          if ((nread == 0 && aVar21 == CURLDIGESTALGO_MD5) && local_6c == 0) goto LAB_0003a318;\n          cVar10 = (data->req).ignorebody;\n          if (aVar21 == CURLDIGESTALGO_MD5) {\nLAB_0003a358:\n            if (((conn->data->set).http_ce_skip == false) &&\n               (writer = (data->req).writer_stack, writer != (contenc_writer *)0x0)) {\n              if (cVar10 == '\0') {\n                CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            pCVar22 = conn->handler;\n            if (cVar10 == '\0') {\n              pcVar17 = (data->req).str;\n              if ((pCVar22->protocol & 0xc000) == 0) {\n                CVar12 = Curl_client_write(conn,1,pcVar17,nread);\n              }\n              else {\n                CVar12 = Curl_pop3_write(conn,pcVar17,nread);\n              }\nLAB_0003a392:\n              (data->req).badheader = CURLDIGESTALGO_MD5;\n              if (CVar12 == CURLE_OK) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if ((_Bool)cVar10 == false) {\n              uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n              uVar15 = (uint)(data->req).maxdownload;\n              uVar26 = (data->req).hbuflen;\n              if (((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26)))\n              {\n                uVar26 = uVar15;\n              }\n              CVar12 = Curl_client_write(conn,1,(data->state).headerbuff,uVar26);\n              if (CVar12 != CURLE_OK) goto LAB_00039d70;\n              aVar21 = (data->req).badheader;\n            }\n            if ((uint)aVar21 < 2) {\n              cVar10 = (data->req).ignorebody;\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            pCVar22 = conn->handler;\n          }\n          (data->req).badheader = CURLDIGESTALGO_MD5;\n          goto LAB_00039df8;\n        }" statement_identifier : (if_statement "if ((0 < nread) || (local_6c != 0)) {\n          if ((data->set).opt_no_body != false) {\n            CVar12 = CURLE_WEIRD_SERVER_REPLY;\n            Curl_conncontrol(conn,2);\n            *done = true;\n            goto LAB_00039d70;\n          }\n          iVar24 = (data->req).bodywrites;\n          if (local_6c == 0 && iVar24 == 0) {\n            if ((conn->handler->protocol & 0x40003) == 0) {\n              iVar24 = 0;\n            }\n            else {\n              if ((data->req).newurl != (char *)0x0) {\n                if ((conn->bits).close != false) {\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }\n                (data->req).ignorebody = true;\n                Curl_infof(data,"Ignoring the response-body\n");\n              }\n              iVar24 = *(int *)((int)&(data->state).resume_from + 4);\n              iVar20 = (int)(data->state).resume_from;\n              if ((((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false)) {\n                if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)) {\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }\n                else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }\n                goto LAB_00039d70;\n              }\n              if ((((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)) &&\n                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)) {\n                *done = true;\n                (data->info).httpcode = 0x130;\n                Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);\n                Curl_conncontrol(conn,1);\n                goto LAB_00039e7c;\n              }\n              iVar24 = (data->req).bodywrites;\n            }\n          }\n          _Var9 = (data->set).verbose;\n          (data->req).bodywrites = iVar24 + 1;\n          if (_Var9 == false) {\nLAB_0003a05d:\n            if ((data->req).chunk != false) {\nLAB_0003a280:\n              code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread);\n              if (CHUNKE_OK < code) {\n                if (code == CHUNKE_WRITE_ERROR) {\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }\n                else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }\n                goto LAB_00039d70;\n              }\n              if (code == CHUNKE_STOP) {\n                sVar18 = (conn->chunk).dataleft;\n                piVar2 = &(data->req).keepon;\n                *piVar2 = *piVar2 & 0xfffffffe;\n                if (sVar18 != 0) {\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }\n              }\n            }\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n            if (((data->req).badheader == CURLDIGESTALGO_MD5SESS) &&\n               ((data->req).ignorebody == false)) {\n              uVar14 = (data->req).hbuflen;\n              bVar25 = CARRY4(local_54,uVar14);\n              local_54 = local_54 + uVar14;\n              local_50 = local_50 + (uint)bVar25;\n              *(uint *)&(data->req).bytecount = local_54;\n              *(int *)((int)&(data->req).bytecount + 4) = local_50;\n            }\n          }\n          else {\n            if (((data->req).badheader == CURLDIGESTALGO_MD5) ||\n               (Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),\n               (data->req).badheader == CURLDIGESTALGO_MD5SESS)) {\n              Curl_debug(data,CURLINFO_DATA_IN,(data->req).str,nread);\n              goto LAB_0003a05d;\n            }\n            if ((data->req).chunk != false) goto LAB_0003a280;\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n          }\n          uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n          local_4c = (uint)(data->req).maxdownload;\n          uVar15 = nread + local_54;\n          local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n          if (((uVar14 & local_4c) != 0xffffffff) &&\n             ((SBORROW4(local_48,uVar14) != SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c)))\n              == (int)((local_48 - uVar14) - (uint)(uVar15 < local_4c)) < 0)) {\n            iVar24 = nread + local_54;\n            local_40 = iVar24 - local_4c;\n            if ((local_40 != 0) && ((data->req).ignorebody == false)) {\n              _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n              if (_Var9) {\n                Curl_infof(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread);\n                (conn->bits).stream_was_rewound = true;\n                conn->read_pos = conn->read_pos + (local_4c - iVar24);\n              }\n              else {\n                Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4));\n              }\n              local_4c = (uint)(data->req).maxdownload;\n              local_50 = *(int *)((int)&(data->req).bytecount + 4);\n              local_54 = (uint)(data->req).bytecount;\n            }\n            nread = local_4c - local_54;\n            if (nread < 0) {\n              nread = 0;\n              local_4c = local_54;\n              local_48 = local_50;\n            }\n            else {\n              local_4c = nread + local_54;\n              local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n            }\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffe;\n            uVar15 = local_4c;\n          }\n          local_4c = uVar15;\n          *(uint *)&(data->req).bytecount = local_4c;\n          *(int *)((int)&(data->req).bytecount + 4) = local_48;\n          Curl_pgrsSetDownloadCounter(data,CONCAT44(local_48,local_4c));\n          if ((data->req).chunk != false) goto LAB_00039df2;\n          aVar21 = (data->req).badheader;\n          if ((nread == 0 && aVar21 == CURLDIGESTALGO_MD5) && local_6c == 0) goto LAB_0003a318;\n          cVar10 = (data->req).ignorebody;\n          if (aVar21 == CURLDIGESTALGO_MD5) {\nLAB_0003a358:\n            if (((conn->data->set).http_ce_skip == false) &&\n               (writer = (data->req).writer_stack, writer != (contenc_writer *)0x0)) {\n              if (cVar10 == '\0') {\n                CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            pCVar22 = conn->handler;\n            if (cVar10 == '\0') {\n              pcVar17 = (data->req).str;\n              if ((pCVar22->protocol & 0xc000) == 0) {\n                CVar12 = Curl_client_write(conn,1,pcVar17,nread);\n              }\n              else {\n                CVar12 = Curl_pop3_write(conn,pcVar17,nread);\n              }\nLAB_0003a392:\n              (data->req).badheader = CURLDIGESTALGO_MD5;\n              if (CVar12 == CURLE_OK) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if ((_Bool)cVar10 == false) {\n              uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n              uVar15 = (uint)(data->req).maxdownload;\n              uVar26 = (data->req).hbuflen;\n              if (((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26)))\n              {\n                uVar26 = uVar15;\n              }\n              CVar12 = Curl_client_write(conn,1,(data->state).headerbuff,uVar26);\n              if (CVar12 != CURLE_OK) goto LAB_00039d70;\n              aVar21 = (data->req).badheader;\n            }\n            if ((uint)aVar21 < 2) {\n              cVar10 = (data->req).ignorebody;\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            pCVar22 = conn->handler;\n          }\n          (data->req).badheader = CURLDIGESTALGO_MD5;\n          goto LAB_00039df8;\n        }" if (parenthesized_expression "((0 < nread) || (local_6c != 0))" ( (binary_expression "(0 < nread) || (local_6c != 0)" (parenthesized_expression "(0 < nread)" ( (binary_expression "0 < nread" number_literal < identifier) )) || (parenthesized_expression "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) ))) )) (compound_statement "{\n          if ((data->set).opt_no_body != false) {\n            CVar12 = CURLE_WEIRD_SERVER_REPLY;\n            Curl_conncontrol(conn,2);\n            *done = true;\n            goto LAB_00039d70;\n          }\n          iVar24 = (data->req).bodywrites;\n          if (local_6c == 0 && iVar24 == 0) {\n            if ((conn->handler->protocol & 0x40003) == 0) {\n              iVar24 = 0;\n            }\n            else {\n              if ((data->req).newurl != (char *)0x0) {\n                if ((conn->bits).close != false) {\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }\n                (data->req).ignorebody = true;\n                Curl_infof(data,"Ignoring the response-body\n");\n              }\n              iVar24 = *(int *)((int)&(data->state).resume_from + 4);\n              iVar20 = (int)(data->state).resume_from;\n              if ((((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false)) {\n                if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)) {\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }\n                else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }\n                goto LAB_00039d70;\n              }\n              if ((((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)) &&\n                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)) {\n                *done = true;\n                (data->info).httpcode = 0x130;\n                Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);\n                Curl_conncontrol(conn,1);\n                goto LAB_00039e7c;\n              }\n              iVar24 = (data->req).bodywrites;\n            }\n          }\n          _Var9 = (data->set).verbose;\n          (data->req).bodywrites = iVar24 + 1;\n          if (_Var9 == false) {\nLAB_0003a05d:\n            if ((data->req).chunk != false) {\nLAB_0003a280:\n              code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread);\n              if (CHUNKE_OK < code) {\n                if (code == CHUNKE_WRITE_ERROR) {\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }\n                else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }\n                goto LAB_00039d70;\n              }\n              if (code == CHUNKE_STOP) {\n                sVar18 = (conn->chunk).dataleft;\n                piVar2 = &(data->req).keepon;\n                *piVar2 = *piVar2 & 0xfffffffe;\n                if (sVar18 != 0) {\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }\n              }\n            }\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n            if (((data->req).badheader == CURLDIGESTALGO_MD5SESS) &&\n               ((data->req).ignorebody == false)) {\n              uVar14 = (data->req).hbuflen;\n              bVar25 = CARRY4(local_54,uVar14);\n              local_54 = local_54 + uVar14;\n              local_50 = local_50 + (uint)bVar25;\n              *(uint *)&(data->req).bytecount = local_54;\n              *(int *)((int)&(data->req).bytecount + 4) = local_50;\n            }\n          }\n          else {\n            if (((data->req).badheader == CURLDIGESTALGO_MD5) ||\n               (Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),\n               (data->req).badheader == CURLDIGESTALGO_MD5SESS)) {\n              Curl_debug(data,CURLINFO_DATA_IN,(data->req).str,nread);\n              goto LAB_0003a05d;\n            }\n            if ((data->req).chunk != false) goto LAB_0003a280;\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n          }\n          uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n          local_4c = (uint)(data->req).maxdownload;\n          uVar15 = nread + local_54;\n          local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n          if (((uVar14 & local_4c) != 0xffffffff) &&\n             ((SBORROW4(local_48,uVar14) != SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c)))\n              == (int)((local_48 - uVar14) - (uint)(uVar15 < local_4c)) < 0)) {\n            iVar24 = nread + local_54;\n            local_40 = iVar24 - local_4c;\n            if ((local_40 != 0) && ((data->req).ignorebody == false)) {\n              _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n              if (_Var9) {\n                Curl_infof(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread);\n                (conn->bits).stream_was_rewound = true;\n                conn->read_pos = conn->read_pos + (local_4c - iVar24);\n              }\n              else {\n                Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4));\n              }\n              local_4c = (uint)(data->req).maxdownload;\n              local_50 = *(int *)((int)&(data->req).bytecount + 4);\n              local_54 = (uint)(data->req).bytecount;\n            }\n            nread = local_4c - local_54;\n            if (nread < 0) {\n              nread = 0;\n              local_4c = local_54;\n              local_48 = local_50;\n            }\n            else {\n              local_4c = nread + local_54;\n              local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n            }\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffe;\n            uVar15 = local_4c;\n          }\n          local_4c = uVar15;\n          *(uint *)&(data->req).bytecount = local_4c;\n          *(int *)((int)&(data->req).bytecount + 4) = local_48;\n          Curl_pgrsSetDownloadCounter(data,CONCAT44(local_48,local_4c));\n          if ((data->req).chunk != false) goto LAB_00039df2;\n          aVar21 = (data->req).badheader;\n          if ((nread == 0 && aVar21 == CURLDIGESTALGO_MD5) && local_6c == 0) goto LAB_0003a318;\n          cVar10 = (data->req).ignorebody;\n          if (aVar21 == CURLDIGESTALGO_MD5) {\nLAB_0003a358:\n            if (((conn->data->set).http_ce_skip == false) &&\n               (writer = (data->req).writer_stack, writer != (contenc_writer *)0x0)) {\n              if (cVar10 == '\0') {\n                CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            pCVar22 = conn->handler;\n            if (cVar10 == '\0') {\n              pcVar17 = (data->req).str;\n              if ((pCVar22->protocol & 0xc000) == 0) {\n                CVar12 = Curl_client_write(conn,1,pcVar17,nread);\n              }\n              else {\n                CVar12 = Curl_pop3_write(conn,pcVar17,nread);\n              }\nLAB_0003a392:\n              (data->req).badheader = CURLDIGESTALGO_MD5;\n              if (CVar12 == CURLE_OK) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if ((_Bool)cVar10 == false) {\n              uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n              uVar15 = (uint)(data->req).maxdownload;\n              uVar26 = (data->req).hbuflen;\n              if (((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26)))\n              {\n                uVar26 = uVar15;\n              }\n              CVar12 = Curl_client_write(conn,1,(data->state).headerbuff,uVar26);\n              if (CVar12 != CURLE_OK) goto LAB_00039d70;\n              aVar21 = (data->req).badheader;\n            }\n            if ((uint)aVar21 < 2) {\n              cVar10 = (data->req).ignorebody;\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            pCVar22 = conn->handler;\n          }\n          (data->req).badheader = CURLDIGESTALGO_MD5;\n          goto LAB_00039df8;\n        }" { (if_statement "if ((data->set).opt_no_body != false) {\n            CVar12 = CURLE_WEIRD_SERVER_REPLY;\n            Curl_conncontrol(conn,2);\n            *done = true;\n            goto LAB_00039d70;\n          }" if (parenthesized_expression "((data->set).opt_no_body != false)" ( (binary_expression "(data->set).opt_no_body != false" (field_expression "(data->set).opt_no_body" (parenthesized_expression "(data->set)" ( (field_expression "data->set" identifier -> field_identifier) )) . field_identifier) != false) )) (compound_statement "{\n            CVar12 = CURLE_WEIRD_SERVER_REPLY;\n            Curl_conncontrol(conn,2);\n            *done = true;\n            goto LAB_00039d70;\n          }" { (expression_statement "CVar12 = CURLE_WEIRD_SERVER_REPLY;" (assignment_expression "CVar12 = CURLE_WEIRD_SERVER_REPLY" identifier = identifier) ;) (expression_statement "Curl_conncontrol(conn,2);" (call_expression "Curl_conncontrol(conn,2)" identifier (argument_list "(conn,2)" ( identifier , number_literal ))) ;) (expression_statement "*done = true;" (assignment_expression "*done = true" (pointer_expression "*done" * identifier) = true) ;) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (expression_statement "iVar24 = (data->req).bodywrites;" (assignment_expression "iVar24 = (data->req).bodywrites" identifier = (field_expression "(data->req).bodywrites" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (local_6c == 0 && iVar24 == 0) {\n            if ((conn->handler->protocol & 0x40003) == 0) {\n              iVar24 = 0;\n            }\n            else {\n              if ((data->req).newurl != (char *)0x0) {\n                if ((conn->bits).close != false) {\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }\n                (data->req).ignorebody = true;\n                Curl_infof(data,"Ignoring the response-body\n");\n              }\n              iVar24 = *(int *)((int)&(data->state).resume_from + 4);\n              iVar20 = (int)(data->state).resume_from;\n              if ((((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false)) {\n                if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)) {\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }\n                else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }\n                goto LAB_00039d70;\n              }\n              if ((((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)) &&\n                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)) {\n                *done = true;\n                (data->info).httpcode = 0x130;\n                Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);\n                Curl_conncontrol(conn,1);\n                goto LAB_00039e7c;\n              }\n              iVar24 = (data->req).bodywrites;\n            }\n          }" if (parenthesized_expression "(local_6c == 0 && iVar24 == 0)" ( (binary_expression "local_6c == 0 && iVar24 == 0" (binary_expression "local_6c == 0" identifier == number_literal) && (binary_expression "iVar24 == 0" identifier == number_literal)) )) (compound_statement "{\n            if ((conn->handler->protocol & 0x40003) == 0) {\n              iVar24 = 0;\n            }\n            else {\n              if ((data->req).newurl != (char *)0x0) {\n                if ((conn->bits).close != false) {\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }\n                (data->req).ignorebody = true;\n                Curl_infof(data,"Ignoring the response-body\n");\n              }\n              iVar24 = *(int *)((int)&(data->state).resume_from + 4);\n              iVar20 = (int)(data->state).resume_from;\n              if ((((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false)) {\n                if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)) {\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }\n                else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }\n                goto LAB_00039d70;\n              }\n              if ((((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)) &&\n                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)) {\n                *done = true;\n                (data->info).httpcode = 0x130;\n                Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);\n                Curl_conncontrol(conn,1);\n                goto LAB_00039e7c;\n              }\n              iVar24 = (data->req).bodywrites;\n            }\n          }" { (if_statement "if ((conn->handler->protocol & 0x40003) == 0) {\n              iVar24 = 0;\n            }\n            else {\n              if ((data->req).newurl != (char *)0x0) {\n                if ((conn->bits).close != false) {\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }\n                (data->req).ignorebody = true;\n                Curl_infof(data,"Ignoring the response-body\n");\n              }\n              iVar24 = *(int *)((int)&(data->state).resume_from + 4);\n              iVar20 = (int)(data->state).resume_from;\n              if ((((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false)) {\n                if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)) {\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }\n                else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }\n                goto LAB_00039d70;\n              }\n              if ((((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)) &&\n                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)) {\n                *done = true;\n                (data->info).httpcode = 0x130;\n                Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);\n                Curl_conncontrol(conn,1);\n                goto LAB_00039e7c;\n              }\n              iVar24 = (data->req).bodywrites;\n            }" if (parenthesized_expression "((conn->handler->protocol & 0x40003) == 0)" ( (binary_expression "(conn->handler->protocol & 0x40003) == 0" (parenthesized_expression "(conn->handler->protocol & 0x40003)" ( (binary_expression "conn->handler->protocol & 0x40003" (field_expression "conn->handler->protocol" (field_expression "conn->handler" identifier -> field_identifier) -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n              iVar24 = 0;\n            }" { (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) }) (else_clause "else {\n              if ((data->req).newurl != (char *)0x0) {\n                if ((conn->bits).close != false) {\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }\n                (data->req).ignorebody = true;\n                Curl_infof(data,"Ignoring the response-body\n");\n              }\n              iVar24 = *(int *)((int)&(data->state).resume_from + 4);\n              iVar20 = (int)(data->state).resume_from;\n              if ((((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false)) {\n                if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)) {\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }\n                else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }\n                goto LAB_00039d70;\n              }\n              if ((((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)) &&\n                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)) {\n                *done = true;\n                (data->info).httpcode = 0x130;\n                Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);\n                Curl_conncontrol(conn,1);\n                goto LAB_00039e7c;\n              }\n              iVar24 = (data->req).bodywrites;\n            }" else (compound_statement "{\n              if ((data->req).newurl != (char *)0x0) {\n                if ((conn->bits).close != false) {\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }\n                (data->req).ignorebody = true;\n                Curl_infof(data,"Ignoring the response-body\n");\n              }\n              iVar24 = *(int *)((int)&(data->state).resume_from + 4);\n              iVar20 = (int)(data->state).resume_from;\n              if ((((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false)) {\n                if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)) {\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }\n                else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }\n                goto LAB_00039d70;\n              }\n              if ((((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)) &&\n                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)) {\n                *done = true;\n                (data->info).httpcode = 0x130;\n                Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);\n                Curl_conncontrol(conn,1);\n                goto LAB_00039e7c;\n              }\n              iVar24 = (data->req).bodywrites;\n            }" { (if_statement "if ((data->req).newurl != (char *)0x0) {\n                if ((conn->bits).close != false) {\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }\n                (data->req).ignorebody = true;\n                Curl_infof(data,"Ignoring the response-body\n");\n              }" if (parenthesized_expression "((data->req).newurl != (char *)0x0)" ( (binary_expression "(data->req).newurl != (char *)0x0" (field_expression "(data->req).newurl" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                if ((conn->bits).close != false) {\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }\n                (data->req).ignorebody = true;\n                Curl_infof(data,"Ignoring the response-body\n");\n              }" { (if_statement "if ((conn->bits).close != false) {\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }" if (parenthesized_expression "((conn->bits).close != false)" ( (binary_expression "(conn->bits).close != false" (field_expression "(conn->bits).close" (parenthesized_expression "(conn->bits)" ( (field_expression "conn->bits" identifier -> field_identifier) )) . field_identifier) != false) )) (compound_statement "{\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  CVar12 = CURLE_OK;\n                  *done = true;\n                  goto LAB_00039d70;\n                }" { (expression_statement "piVar2 = &(data->req).keepon;" (assignment_expression "piVar2 = &(data->req).keepon" identifier = (pointer_expression "&(data->req).keepon" & (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*piVar2 = *piVar2 & 0xfffffffe;" (assignment_expression "*piVar2 = *piVar2 & 0xfffffffe" (pointer_expression "*piVar2" * identifier) = (binary_expression "*piVar2 & 0xfffffffe" (pointer_expression "*piVar2" * identifier) & number_literal)) ;) (expression_statement "CVar12 = CURLE_OK;" (assignment_expression "CVar12 = CURLE_OK" identifier = identifier) ;) (expression_statement "*done = true;" (assignment_expression "*done = true" (pointer_expression "*done" * identifier) = true) ;) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (expression_statement "(data->req).ignorebody = true;" (assignment_expression "(data->req).ignorebody = true" (field_expression "(data->req).ignorebody" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) = true) ;) (expression_statement "Curl_infof(data,"Ignoring the response-body\n");" (call_expression "Curl_infof(data,"Ignoring the response-body\n")" identifier (argument_list "(data,"Ignoring the response-body\n")" ( identifier , (string_literal ""Ignoring the response-body\n"" " string_content escape_sequence ") ))) ;) })) (expression_statement "iVar24 = *(int *)((int)&(data->state).resume_from + 4);" (assignment_expression "iVar24 = *(int *)((int)&(data->state).resume_from + 4)" identifier = (pointer_expression "*(int *)((int)&(data->state).resume_from + 4)" * (cast_expression "(int *)((int)&(data->state).resume_from + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->state).resume_from + 4)" ( (binary_expression "(int)&(data->state).resume_from + 4" (cast_expression "(int)&(data->state).resume_from" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->state).resume_from" & (field_expression "(data->state).resume_from" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "iVar20 = (int)(data->state).resume_from;" (assignment_expression "iVar20 = (int)(data->state).resume_from" identifier = (cast_expression "(int)(data->state).resume_from" ( (type_descriptor "int" primitive_type) ) (field_expression "(data->state).resume_from" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if ((((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false)) {\n                if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)) {\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }\n                else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }\n                goto LAB_00039d70;\n              }" if (parenthesized_expression "((((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false))" ( (binary_expression "(((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)) && ((data->req).ignorebody == false)" (parenthesized_expression "(((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET))" ( (binary_expression "((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)) &&\n                  ((data->set).httpreq == HTTPREQ_GET)" (parenthesized_expression "((iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false))" ( (binary_expression "(iVar24 != 0 || iVar20 != 0) && ((data->req).content_range == false)" (parenthesized_expression "(iVar24 != 0 || iVar20 != 0)" ( (binary_expression "iVar24 != 0 || iVar20 != 0" (binary_expression "iVar24 != 0" identifier != number_literal) || (binary_expression "iVar20 != 0" identifier != number_literal)) )) && (parenthesized_expression "((data->req).content_range == false)" ( (binary_expression "(data->req).content_range == false" (field_expression "(data->req).content_range" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) == false) ))) )) && (parenthesized_expression "((data->set).httpreq == HTTPREQ_GET)" ( (binary_expression "(data->set).httpreq == HTTPREQ_GET" (field_expression "(data->set).httpreq" (parenthesized_expression "(data->set)" ( (field_expression "data->set" identifier -> field_identifier) )) . field_identifier) == identifier) ))) )) && (parenthesized_expression "((data->req).ignorebody == false)" ( (binary_expression "(data->req).ignorebody == false" (field_expression "(data->req).ignorebody" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) == false) ))) )) (compound_statement "{\n                if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)) {\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }\n                else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }\n                goto LAB_00039d70;\n              }" { (if_statement "if ((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)) {\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }\n                else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }" if (parenthesized_expression "((iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size))" ( (binary_expression "(iVar24 == *(int *)((int)&(data->req).size + 4)) &&\n                   (iVar20 == (int)(data->req).size)" (parenthesized_expression "(iVar24 == *(int *)((int)&(data->req).size + 4))" ( (binary_expression "iVar24 == *(int *)((int)&(data->req).size + 4)" identifier == (pointer_expression "*(int *)((int)&(data->req).size + 4)" * (cast_expression "(int *)((int)&(data->req).size + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).size + 4)" ( (binary_expression "(int)&(data->req).size + 4" (cast_expression "(int)&(data->req).size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).size" & (field_expression "(data->req).size" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) )) && (parenthesized_expression "(iVar20 == (int)(data->req).size)" ( (binary_expression "iVar20 == (int)(data->req).size" identifier == (cast_expression "(int)(data->req).size" ( (type_descriptor "int" primitive_type) ) (field_expression "(data->req).size" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) ))) )) (compound_statement "{\n                  Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);\n                  CVar12 = CURLE_OK;\n                  Curl_conncontrol(conn,1);\n                  piVar2 = &(data->req).keepon;\n                  *piVar2 = *piVar2 & 0xfffffffe;\n                  *done = true;\n                }" { (expression_statement "Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20);" (call_expression "Curl_infof(data,"The entire document is already downloaded",iVar20,iVar20)" identifier (argument_list "(data,"The entire document is already downloaded",iVar20,iVar20)" ( identifier , (string_literal ""The entire document is already downloaded"" " string_content ") , identifier , identifier ))) ;) (expression_statement "CVar12 = CURLE_OK;" (assignment_expression "CVar12 = CURLE_OK" identifier = identifier) ;) (expression_statement "Curl_conncontrol(conn,1);" (call_expression "Curl_conncontrol(conn,1)" identifier (argument_list "(conn,1)" ( identifier , number_literal ))) ;) (expression_statement "piVar2 = &(data->req).keepon;" (assignment_expression "piVar2 = &(data->req).keepon" identifier = (pointer_expression "&(data->req).keepon" & (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*piVar2 = *piVar2 & 0xfffffffe;" (assignment_expression "*piVar2 = *piVar2 & 0xfffffffe" (pointer_expression "*piVar2" * identifier) = (binary_expression "*piVar2 & 0xfffffffe" (pointer_expression "*piVar2" * identifier) & number_literal)) ;) (expression_statement "*done = true;" (assignment_expression "*done = true" (pointer_expression "*done" * identifier) = true) ;) }) (else_clause "else {\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }" else (compound_statement "{\n                  CVar12 = CURLE_RANGE_ERROR;\n                  Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);\n                }" { (expression_statement "CVar12 = CURLE_RANGE_ERROR;" (assignment_expression "CVar12 = CURLE_RANGE_ERROR" identifier = identifier) ;) (expression_statement "Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn);" (call_expression "Curl_failf(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn)" identifier (argument_list "(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."\n                             ,conn,conn)" ( identifier , (string_literal ""HTTP server doesn\'t seem to support byte ranges. Cannot resume."" " string_content escape_sequence string_content ") , identifier , identifier ))) ;) }))) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (if_statement "if ((((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)) &&\n                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)) {\n                *done = true;\n                (data->info).httpcode = 0x130;\n                Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);\n                Curl_conncontrol(conn,1);\n                goto LAB_00039e7c;\n              }" if (parenthesized_expression "((((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)) &&\n                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9))" ( (binary_expression "(((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)) &&\n                 (_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)" (parenthesized_expression "(((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0))" ( (binary_expression "((data->set).timecondition != CURL_TIMECOND_NONE) &&\n                  ((data->state).range == (char *)0x0)" (parenthesized_expression "((data->set).timecondition != CURL_TIMECOND_NONE)" ( (binary_expression "(data->set).timecondition != CURL_TIMECOND_NONE" (field_expression "(data->set).timecondition" (parenthesized_expression "(data->set)" ( (field_expression "data->set" identifier -> field_identifier) )) . field_identifier) != identifier) )) && (parenthesized_expression "((data->state).range == (char *)0x0)" ( (binary_expression "(data->state).range == (char *)0x0" (field_expression "(data->state).range" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9)" ( (comma_expression "_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc), !_Var9" (assignment_expression "_Var9 = Curl_meets_timecondition(data,(data->req).timeofdoc)" identifier = (call_expression "Curl_meets_timecondition(data,(data->req).timeofdoc)" identifier (argument_list "(data,(data->req).timeofdoc)" ( identifier , (field_expression "(data->req).timeofdoc" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) )))) , (unary_expression "!_Var9" ! identifier)) ))) )) (compound_statement "{\n                *done = true;\n                (data->info).httpcode = 0x130;\n                Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);\n                Curl_conncontrol(conn,1);\n                goto LAB_00039e7c;\n              }" { (expression_statement "*done = true;" (assignment_expression "*done = true" (pointer_expression "*done" * identifier) = true) ;) (expression_statement "(data->info).httpcode = 0x130;" (assignment_expression "(data->info).httpcode = 0x130" (field_expression "(data->info).httpcode" (parenthesized_expression "(data->info)" ( (field_expression "data->info" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn);" (call_expression "Curl_infof(data,"Simulate a HTTP 304 response!\n",conn,conn)" identifier (argument_list "(data,"Simulate a HTTP 304 response!\n",conn,conn)" ( identifier , (string_literal ""Simulate a HTTP 304 response!\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "Curl_conncontrol(conn,1);" (call_expression "Curl_conncontrol(conn,1)" identifier (argument_list "(conn,1)" ( identifier , number_literal ))) ;) (goto_statement "goto LAB_00039e7c;" goto statement_identifier ;) })) (expression_statement "iVar24 = (data->req).bodywrites;" (assignment_expression "iVar24 = (data->req).bodywrites" identifier = (field_expression "(data->req).bodywrites" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) }))) })) (expression_statement "_Var9 = (data->set).verbose;" (assignment_expression "_Var9 = (data->set).verbose" identifier = (field_expression "(data->set).verbose" (parenthesized_expression "(data->set)" ( (field_expression "data->set" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(data->req).bodywrites = iVar24 + 1;" (assignment_expression "(data->req).bodywrites = iVar24 + 1" (field_expression "(data->req).bodywrites" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) = (binary_expression "iVar24 + 1" identifier + number_literal)) ;) (if_statement "if (_Var9 == false) {\nLAB_0003a05d:\n            if ((data->req).chunk != false) {\nLAB_0003a280:\n              code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread);\n              if (CHUNKE_OK < code) {\n                if (code == CHUNKE_WRITE_ERROR) {\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }\n                else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }\n                goto LAB_00039d70;\n              }\n              if (code == CHUNKE_STOP) {\n                sVar18 = (conn->chunk).dataleft;\n                piVar2 = &(data->req).keepon;\n                *piVar2 = *piVar2 & 0xfffffffe;\n                if (sVar18 != 0) {\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }\n              }\n            }\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n            if (((data->req).badheader == CURLDIGESTALGO_MD5SESS) &&\n               ((data->req).ignorebody == false)) {\n              uVar14 = (data->req).hbuflen;\n              bVar25 = CARRY4(local_54,uVar14);\n              local_54 = local_54 + uVar14;\n              local_50 = local_50 + (uint)bVar25;\n              *(uint *)&(data->req).bytecount = local_54;\n              *(int *)((int)&(data->req).bytecount + 4) = local_50;\n            }\n          }\n          else {\n            if (((data->req).badheader == CURLDIGESTALGO_MD5) ||\n               (Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),\n               (data->req).badheader == CURLDIGESTALGO_MD5SESS)) {\n              Curl_debug(data,CURLINFO_DATA_IN,(data->req).str,nread);\n              goto LAB_0003a05d;\n            }\n            if ((data->req).chunk != false) goto LAB_0003a280;\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n          }" if (parenthesized_expression "(_Var9 == false)" ( (binary_expression "_Var9 == false" identifier == false) )) (compound_statement "{\nLAB_0003a05d:\n            if ((data->req).chunk != false) {\nLAB_0003a280:\n              code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread);\n              if (CHUNKE_OK < code) {\n                if (code == CHUNKE_WRITE_ERROR) {\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }\n                else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }\n                goto LAB_00039d70;\n              }\n              if (code == CHUNKE_STOP) {\n                sVar18 = (conn->chunk).dataleft;\n                piVar2 = &(data->req).keepon;\n                *piVar2 = *piVar2 & 0xfffffffe;\n                if (sVar18 != 0) {\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }\n              }\n            }\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n            if (((data->req).badheader == CURLDIGESTALGO_MD5SESS) &&\n               ((data->req).ignorebody == false)) {\n              uVar14 = (data->req).hbuflen;\n              bVar25 = CARRY4(local_54,uVar14);\n              local_54 = local_54 + uVar14;\n              local_50 = local_50 + (uint)bVar25;\n              *(uint *)&(data->req).bytecount = local_54;\n              *(int *)((int)&(data->req).bytecount + 4) = local_50;\n            }\n          }" { (labeled_statement "LAB_0003a05d:\n            if ((data->req).chunk != false) {\nLAB_0003a280:\n              code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread);\n              if (CHUNKE_OK < code) {\n                if (code == CHUNKE_WRITE_ERROR) {\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }\n                else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }\n                goto LAB_00039d70;\n              }\n              if (code == CHUNKE_STOP) {\n                sVar18 = (conn->chunk).dataleft;\n                piVar2 = &(data->req).keepon;\n                *piVar2 = *piVar2 & 0xfffffffe;\n                if (sVar18 != 0) {\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }\n              }\n            }" statement_identifier : (if_statement "if ((data->req).chunk != false) {\nLAB_0003a280:\n              code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread);\n              if (CHUNKE_OK < code) {\n                if (code == CHUNKE_WRITE_ERROR) {\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }\n                else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }\n                goto LAB_00039d70;\n              }\n              if (code == CHUNKE_STOP) {\n                sVar18 = (conn->chunk).dataleft;\n                piVar2 = &(data->req).keepon;\n                *piVar2 = *piVar2 & 0xfffffffe;\n                if (sVar18 != 0) {\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }\n              }\n            }" if (parenthesized_expression "((data->req).chunk != false)" ( (binary_expression "(data->req).chunk != false" (field_expression "(data->req).chunk" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) != false) )) (compound_statement "{\nLAB_0003a280:\n              code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread);\n              if (CHUNKE_OK < code) {\n                if (code == CHUNKE_WRITE_ERROR) {\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }\n                else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }\n                goto LAB_00039d70;\n              }\n              if (code == CHUNKE_STOP) {\n                sVar18 = (conn->chunk).dataleft;\n                piVar2 = &(data->req).keepon;\n                *piVar2 = *piVar2 & 0xfffffffe;\n                if (sVar18 != 0) {\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }\n              }\n            }" { (labeled_statement "LAB_0003a280:\n              code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread);" statement_identifier : (expression_statement "code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread);" (assignment_expression "code = Curl_httpchunk_read(conn,(data->req).str,nread,&nread)" identifier = (call_expression "Curl_httpchunk_read(conn,(data->req).str,nread,&nread)" identifier (argument_list "(conn,(data->req).str,nread,&nread)" ( identifier , (field_expression "(data->req).str" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) , identifier , (pointer_expression "&nread" & identifier) )))) ;)) (if_statement "if (CHUNKE_OK < code) {\n                if (code == CHUNKE_WRITE_ERROR) {\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }\n                else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }\n                goto LAB_00039d70;\n              }" if (parenthesized_expression "(CHUNKE_OK < code)" ( (binary_expression "CHUNKE_OK < code" identifier < identifier) )) (compound_statement "{\n                if (code == CHUNKE_WRITE_ERROR) {\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }\n                else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }\n                goto LAB_00039d70;\n              }" { (if_statement "if (code == CHUNKE_WRITE_ERROR) {\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }\n                else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }" if (parenthesized_expression "(code == CHUNKE_WRITE_ERROR)" ( (binary_expression "code == CHUNKE_WRITE_ERROR" identifier == identifier) )) (compound_statement "{\n                  CVar12 = CURLE_WRITE_ERROR;\n                  Curl_failf(data,"Failed writing data");\n                }" { (expression_statement "CVar12 = CURLE_WRITE_ERROR;" (assignment_expression "CVar12 = CURLE_WRITE_ERROR" identifier = identifier) ;) (expression_statement "Curl_failf(data,"Failed writing data");" (call_expression "Curl_failf(data,"Failed writing data")" identifier (argument_list "(data,"Failed writing data")" ( identifier , (string_literal ""Failed writing data"" " string_content ") ))) ;) }) (else_clause "else {\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }" else (compound_statement "{\n                  CVar12 = CURLE_RECV_ERROR;\n                  pcVar17 = Curl_chunked_strerror(code);\n                  Curl_failf(data,"%s in chunked-encoding",pcVar17);\n                }" { (expression_statement "CVar12 = CURLE_RECV_ERROR;" (assignment_expression "CVar12 = CURLE_RECV_ERROR" identifier = identifier) ;) (expression_statement "pcVar17 = Curl_chunked_strerror(code);" (assignment_expression "pcVar17 = Curl_chunked_strerror(code)" identifier = (call_expression "Curl_chunked_strerror(code)" identifier (argument_list "(code)" ( identifier )))) ;) (expression_statement "Curl_failf(data,"%s in chunked-encoding",pcVar17);" (call_expression "Curl_failf(data,"%s in chunked-encoding",pcVar17)" identifier (argument_list "(data,"%s in chunked-encoding",pcVar17)" ( identifier , (string_literal ""%s in chunked-encoding"" " string_content ") , identifier ))) ;) }))) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (if_statement "if (code == CHUNKE_STOP) {\n                sVar18 = (conn->chunk).dataleft;\n                piVar2 = &(data->req).keepon;\n                *piVar2 = *piVar2 & 0xfffffffe;\n                if (sVar18 != 0) {\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }\n              }" if (parenthesized_expression "(code == CHUNKE_STOP)" ( (binary_expression "code == CHUNKE_STOP" identifier == identifier) )) (compound_statement "{\n                sVar18 = (conn->chunk).dataleft;\n                piVar2 = &(data->req).keepon;\n                *piVar2 = *piVar2 & 0xfffffffe;\n                if (sVar18 != 0) {\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }\n              }" { (expression_statement "sVar18 = (conn->chunk).dataleft;" (assignment_expression "sVar18 = (conn->chunk).dataleft" identifier = (field_expression "(conn->chunk).dataleft" (parenthesized_expression "(conn->chunk)" ( (field_expression "conn->chunk" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "piVar2 = &(data->req).keepon;" (assignment_expression "piVar2 = &(data->req).keepon" identifier = (pointer_expression "&(data->req).keepon" & (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*piVar2 = *piVar2 & 0xfffffffe;" (assignment_expression "*piVar2 = *piVar2 & 0xfffffffe" (pointer_expression "*piVar2" * identifier) = (binary_expression "*piVar2 & 0xfffffffe" (pointer_expression "*piVar2" * identifier) & number_literal)) ;) (if_statement "if (sVar18 != 0) {\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }" if (parenthesized_expression "(sVar18 != 0)" ( (binary_expression "sVar18 != 0" identifier != number_literal) )) (compound_statement "{\n                  Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);\n                  _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n                  if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }\n                }" { (expression_statement "Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18);" (call_expression "Curl_infof(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18)" identifier (argument_list "(conn->data,"Leftovers after chunking: %zu bytes\n",sVar18)" ( (field_expression "conn->data" identifier -> field_identifier) , (string_literal ""Leftovers after chunking: %zu bytes\n"" " string_content escape_sequence ") , identifier ))) ;) (expression_statement "_Var9 = Curl_pipeline_wanted(conn->data->multi,1);" (assignment_expression "_Var9 = Curl_pipeline_wanted(conn->data->multi,1)" identifier = (call_expression "Curl_pipeline_wanted(conn->data->multi,1)" identifier (argument_list "(conn->data->multi,1)" ( (field_expression "conn->data->multi" (field_expression "conn->data" identifier -> field_identifier) -> field_identifier) , number_literal )))) ;) (if_statement "if (_Var9) {\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }" if (parenthesized_expression "(_Var9)" ( identifier )) (compound_statement "{\n                    Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);\n                    conn->read_pos = conn->read_pos - sVar18;\n                    (conn->bits).stream_was_rewound = true;\n                  }" { (expression_statement "Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18);" (call_expression "Curl_infof(conn->data,"Rewinding %zu bytes\n",sVar18)" identifier (argument_list "(conn->data,"Rewinding %zu bytes\n",sVar18)" ( (field_expression "conn->data" identifier -> field_identifier) , (string_literal ""Rewinding %zu bytes\n"" " string_content escape_sequence ") , identifier ))) ;) (expression_statement "conn->read_pos = conn->read_pos - sVar18;" (assignment_expression "conn->read_pos = conn->read_pos - sVar18" (field_expression "conn->read_pos" identifier -> field_identifier) = (binary_expression "conn->read_pos - sVar18" (field_expression "conn->read_pos" identifier -> field_identifier) - identifier)) ;) (expression_statement "(conn->bits).stream_was_rewound = true;" (assignment_expression "(conn->bits).stream_was_rewound = true" (field_expression "(conn->bits).stream_was_rewound" (parenthesized_expression "(conn->bits)" ( (field_expression "conn->bits" identifier -> field_identifier) )) . field_identifier) = true) ;) })) })) })) }))) (expression_statement "local_54 = (uint)(data->req).bytecount;" (assignment_expression "local_54 = (uint)(data->req).bytecount" identifier = (field_expression "(uint)(data->req).bytecount" (call_expression "(uint)(data->req)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "local_50 = *(int *)((int)&(data->req).bytecount + 4);" (assignment_expression "local_50 = *(int *)((int)&(data->req).bytecount + 4)" identifier = (pointer_expression "*(int *)((int)&(data->req).bytecount + 4)" * (cast_expression "(int *)((int)&(data->req).bytecount + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).bytecount + 4)" ( (binary_expression "(int)&(data->req).bytecount + 4" (cast_expression "(int)&(data->req).bytecount" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).bytecount" & (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (if_statement "if (((data->req).badheader == CURLDIGESTALGO_MD5SESS) &&\n               ((data->req).ignorebody == false)) {\n              uVar14 = (data->req).hbuflen;\n              bVar25 = CARRY4(local_54,uVar14);\n              local_54 = local_54 + uVar14;\n              local_50 = local_50 + (uint)bVar25;\n              *(uint *)&(data->req).bytecount = local_54;\n              *(int *)((int)&(data->req).bytecount + 4) = local_50;\n            }" if (parenthesized_expression "(((data->req).badheader == CURLDIGESTALGO_MD5SESS) &&\n               ((data->req).ignorebody == false))" ( (binary_expression "((data->req).badheader == CURLDIGESTALGO_MD5SESS) &&\n               ((data->req).ignorebody == false)" (parenthesized_expression "((data->req).badheader == CURLDIGESTALGO_MD5SESS)" ( (binary_expression "(data->req).badheader == CURLDIGESTALGO_MD5SESS" (field_expression "(data->req).badheader" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) == identifier) )) && (parenthesized_expression "((data->req).ignorebody == false)" ( (binary_expression "(data->req).ignorebody == false" (field_expression "(data->req).ignorebody" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) == false) ))) )) (compound_statement "{\n              uVar14 = (data->req).hbuflen;\n              bVar25 = CARRY4(local_54,uVar14);\n              local_54 = local_54 + uVar14;\n              local_50 = local_50 + (uint)bVar25;\n              *(uint *)&(data->req).bytecount = local_54;\n              *(int *)((int)&(data->req).bytecount + 4) = local_50;\n            }" { (expression_statement "uVar14 = (data->req).hbuflen;" (assignment_expression "uVar14 = (data->req).hbuflen" identifier = (field_expression "(data->req).hbuflen" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "bVar25 = CARRY4(local_54,uVar14);" (assignment_expression "bVar25 = CARRY4(local_54,uVar14)" identifier = (call_expression "CARRY4(local_54,uVar14)" identifier (argument_list "(local_54,uVar14)" ( identifier , identifier )))) ;) (expression_statement "local_54 = local_54 + uVar14;" (assignment_expression "local_54 = local_54 + uVar14" identifier = (binary_expression "local_54 + uVar14" identifier + identifier)) ;) (expression_statement "local_50 = local_50 + (uint)bVar25;" (assignment_expression "local_50 = local_50 + (uint)bVar25" identifier = (binary_expression "local_50 + (uint)bVar25" identifier + (cast_expression "(uint)bVar25" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "*(uint *)&(data->req).bytecount = local_54;" (assignment_expression "*(uint *)&(data->req).bytecount = local_54" (pointer_expression "*(uint *)&(data->req).bytecount" * (cast_expression "(uint *)&(data->req).bytecount" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(data->req).bytecount" & (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)))) = identifier) ;) (expression_statement "*(int *)((int)&(data->req).bytecount + 4) = local_50;" (assignment_expression "*(int *)((int)&(data->req).bytecount + 4) = local_50" (pointer_expression "*(int *)((int)&(data->req).bytecount + 4)" * (cast_expression "(int *)((int)&(data->req).bytecount + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).bytecount + 4)" ( (binary_expression "(int)&(data->req).bytecount + 4" (cast_expression "(int)&(data->req).bytecount" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).bytecount" & (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = identifier) ;) })) }) (else_clause "else {\n            if (((data->req).badheader == CURLDIGESTALGO_MD5) ||\n               (Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),\n               (data->req).badheader == CURLDIGESTALGO_MD5SESS)) {\n              Curl_debug(data,CURLINFO_DATA_IN,(data->req).str,nread);\n              goto LAB_0003a05d;\n            }\n            if ((data->req).chunk != false) goto LAB_0003a280;\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n          }" else (compound_statement "{\n            if (((data->req).badheader == CURLDIGESTALGO_MD5) ||\n               (Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),\n               (data->req).badheader == CURLDIGESTALGO_MD5SESS)) {\n              Curl_debug(data,CURLINFO_DATA_IN,(data->req).str,nread);\n              goto LAB_0003a05d;\n            }\n            if ((data->req).chunk != false) goto LAB_0003a280;\n            local_54 = (uint)(data->req).bytecount;\n            local_50 = *(int *)((int)&(data->req).bytecount + 4);\n          }" { (if_statement "if (((data->req).badheader == CURLDIGESTALGO_MD5) ||\n               (Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),\n               (data->req).badheader == CURLDIGESTALGO_MD5SESS)) {\n              Curl_debug(data,CURLINFO_DATA_IN,(data->req).str,nread);\n              goto LAB_0003a05d;\n            }" if (parenthesized_expression "(((data->req).badheader == CURLDIGESTALGO_MD5) ||\n               (Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),\n               (data->req).badheader == CURLDIGESTALGO_MD5SESS))" ( (binary_expression "((data->req).badheader == CURLDIGESTALGO_MD5) ||\n               (Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),\n               (data->req).badheader == CURLDIGESTALGO_MD5SESS)" (parenthesized_expression "((data->req).badheader == CURLDIGESTALGO_MD5)" ( (binary_expression "(data->req).badheader == CURLDIGESTALGO_MD5" (field_expression "(data->req).badheader" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) == identifier) )) || (parenthesized_expression "(Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),\n               (data->req).badheader == CURLDIGESTALGO_MD5SESS)" ( (comma_expression "Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),\n               (data->req).badheader == CURLDIGESTALGO_MD5SESS" (call_expression "Curl_debug(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen)" identifier (argument_list "(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen)" ( identifier , identifier , (field_expression "(data->state).headerbuff" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier) , (field_expression "(data->req).hbuflen" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) ))) , (binary_expression "(data->req).badheader == CURLDIGESTALGO_MD5SESS" (field_expression "(data->req).badheader" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) == identifier)) ))) )) (compound_statement "{\n              Curl_debug(data,CURLINFO_DATA_IN,(data->req).str,nread);\n              goto LAB_0003a05d;\n            }" { (expression_statement "Curl_debug(data,CURLINFO_DATA_IN,(data->req).str,nread);" (call_expression "Curl_debug(data,CURLINFO_DATA_IN,(data->req).str,nread)" identifier (argument_list "(data,CURLINFO_DATA_IN,(data->req).str,nread)" ( identifier , identifier , (field_expression "(data->req).str" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) , identifier ))) ;) (goto_statement "goto LAB_0003a05d;" goto statement_identifier ;) })) (if_statement "if ((data->req).chunk != false) goto LAB_0003a280;" if (parenthesized_expression "((data->req).chunk != false)" ( (binary_expression "(data->req).chunk != false" (field_expression "(data->req).chunk" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) != false) )) (goto_statement "goto LAB_0003a280;" goto statement_identifier ;)) (expression_statement "local_54 = (uint)(data->req).bytecount;" (assignment_expression "local_54 = (uint)(data->req).bytecount" identifier = (field_expression "(uint)(data->req).bytecount" (call_expression "(uint)(data->req)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "local_50 = *(int *)((int)&(data->req).bytecount + 4);" (assignment_expression "local_50 = *(int *)((int)&(data->req).bytecount + 4)" identifier = (pointer_expression "*(int *)((int)&(data->req).bytecount + 4)" * (cast_expression "(int *)((int)&(data->req).bytecount + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).bytecount + 4)" ( (binary_expression "(int)&(data->req).bytecount + 4" (cast_expression "(int)&(data->req).bytecount" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).bytecount" & (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) }))) (expression_statement "uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);" (assignment_expression "uVar14 = *(uint *)((int)&(data->req).maxdownload + 4)" identifier = (pointer_expression "*(uint *)((int)&(data->req).maxdownload + 4)" * (cast_expression "(uint *)((int)&(data->req).maxdownload + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).maxdownload + 4)" ( (binary_expression "(int)&(data->req).maxdownload + 4" (cast_expression "(int)&(data->req).maxdownload" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).maxdownload" & (field_expression "(data->req).maxdownload" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "local_4c = (uint)(data->req).maxdownload;" (assignment_expression "local_4c = (uint)(data->req).maxdownload" identifier = (field_expression "(uint)(data->req).maxdownload" (call_expression "(uint)(data->req)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "uVar15 = nread + local_54;" (assignment_expression "uVar15 = nread + local_54" identifier = (binary_expression "nread + local_54" identifier + identifier)) ;) (expression_statement "local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);" (assignment_expression "local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54)" identifier = (binary_expression "(nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54)" (binary_expression "(nread >> 0x1f) + local_50" (parenthesized_expression "(nread >> 0x1f)" ( (binary_expression "nread >> 0x1f" identifier >> number_literal) )) + identifier) + (cast_expression "(uint)CARRY4(nread,local_54)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(nread,local_54)" identifier (argument_list "(nread,local_54)" ( identifier , identifier )))))) ;) (if_statement "if (((uVar14 & local_4c) != 0xffffffff) &&\n             ((SBORROW4(local_48,uVar14) != SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c)))\n              == (int)((local_48 - uVar14) - (uint)(uVar15 < local_4c)) < 0)) {\n            iVar24 = nread + local_54;\n            local_40 = iVar24 - local_4c;\n            if ((local_40 != 0) && ((data->req).ignorebody == false)) {\n              _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n              if (_Var9) {\n                Curl_infof(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread);\n                (conn->bits).stream_was_rewound = true;\n                conn->read_pos = conn->read_pos + (local_4c - iVar24);\n              }\n              else {\n                Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4));\n              }\n              local_4c = (uint)(data->req).maxdownload;\n              local_50 = *(int *)((int)&(data->req).bytecount + 4);\n              local_54 = (uint)(data->req).bytecount;\n            }\n            nread = local_4c - local_54;\n            if (nread < 0) {\n              nread = 0;\n              local_4c = local_54;\n              local_48 = local_50;\n            }\n            else {\n              local_4c = nread + local_54;\n              local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n            }\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffe;\n            uVar15 = local_4c;\n          }" if (parenthesized_expression "(((uVar14 & local_4c) != 0xffffffff) &&\n             ((SBORROW4(local_48,uVar14) != SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c)))\n              == (int)((local_48 - uVar14) - (uint)(uVar15 < local_4c)) < 0))" ( (binary_expression "((uVar14 & local_4c) != 0xffffffff) &&\n             ((SBORROW4(local_48,uVar14) != SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c)))\n              == (int)((local_48 - uVar14) - (uint)(uVar15 < local_4c)) < 0)" (parenthesized_expression "((uVar14 & local_4c) != 0xffffffff)" ( (binary_expression "(uVar14 & local_4c) != 0xffffffff" (parenthesized_expression "(uVar14 & local_4c)" ( (binary_expression "uVar14 & local_4c" identifier & identifier) )) != number_literal) )) && (parenthesized_expression "((SBORROW4(local_48,uVar14) != SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c)))\n              == (int)((local_48 - uVar14) - (uint)(uVar15 < local_4c)) < 0)" ( (binary_expression "(SBORROW4(local_48,uVar14) != SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c)))\n              == (int)((local_48 - uVar14) - (uint)(uVar15 < local_4c)) < 0" (parenthesized_expression "(SBORROW4(local_48,uVar14) != SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c)))" ( (binary_expression "SBORROW4(local_48,uVar14) != SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c))" (call_expression "SBORROW4(local_48,uVar14)" identifier (argument_list "(local_48,uVar14)" ( identifier , identifier ))) != (call_expression "SBORROW4(local_48 - uVar14,(uint)(uVar15 < local_4c))" identifier (argument_list "(local_48 - uVar14,(uint)(uVar15 < local_4c))" ( (binary_expression "local_48 - uVar14" identifier - identifier) , (call_expression "(uint)(uVar15 < local_4c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar15 < local_4c)" ( (binary_expression "uVar15 < local_4c" identifier < identifier) ))) )))) )) == (binary_expression "(int)((local_48 - uVar14) - (uint)(uVar15 < local_4c)) < 0" (cast_expression "(int)((local_48 - uVar14) - (uint)(uVar15 < local_4c))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((local_48 - uVar14) - (uint)(uVar15 < local_4c))" ( (binary_expression "(local_48 - uVar14) - (uint)(uVar15 < local_4c)" (parenthesized_expression "(local_48 - uVar14)" ( (binary_expression "local_48 - uVar14" identifier - identifier) )) - (call_expression "(uint)(uVar15 < local_4c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar15 < local_4c)" ( (binary_expression "uVar15 < local_4c" identifier < identifier) )))) ))) < number_literal)) ))) )) (compound_statement "{\n            iVar24 = nread + local_54;\n            local_40 = iVar24 - local_4c;\n            if ((local_40 != 0) && ((data->req).ignorebody == false)) {\n              _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n              if (_Var9) {\n                Curl_infof(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread);\n                (conn->bits).stream_was_rewound = true;\n                conn->read_pos = conn->read_pos + (local_4c - iVar24);\n              }\n              else {\n                Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4));\n              }\n              local_4c = (uint)(data->req).maxdownload;\n              local_50 = *(int *)((int)&(data->req).bytecount + 4);\n              local_54 = (uint)(data->req).bytecount;\n            }\n            nread = local_4c - local_54;\n            if (nread < 0) {\n              nread = 0;\n              local_4c = local_54;\n              local_48 = local_50;\n            }\n            else {\n              local_4c = nread + local_54;\n              local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n            }\n            piVar2 = &(data->req).keepon;\n            *piVar2 = *piVar2 & 0xfffffffe;\n            uVar15 = local_4c;\n          }" { (expression_statement "iVar24 = nread + local_54;" (assignment_expression "iVar24 = nread + local_54" identifier = (binary_expression "nread + local_54" identifier + identifier)) ;) (expression_statement "local_40 = iVar24 - local_4c;" (assignment_expression "local_40 = iVar24 - local_4c" identifier = (binary_expression "iVar24 - local_4c" identifier - identifier)) ;) (if_statement "if ((local_40 != 0) && ((data->req).ignorebody == false)) {\n              _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n              if (_Var9) {\n                Curl_infof(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread);\n                (conn->bits).stream_was_rewound = true;\n                conn->read_pos = conn->read_pos + (local_4c - iVar24);\n              }\n              else {\n                Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4));\n              }\n              local_4c = (uint)(data->req).maxdownload;\n              local_50 = *(int *)((int)&(data->req).bytecount + 4);\n              local_54 = (uint)(data->req).bytecount;\n            }" if (parenthesized_expression "((local_40 != 0) && ((data->req).ignorebody == false))" ( (binary_expression "(local_40 != 0) && ((data->req).ignorebody == false)" (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) && (parenthesized_expression "((data->req).ignorebody == false)" ( (binary_expression "(data->req).ignorebody == false" (field_expression "(data->req).ignorebody" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) == false) ))) )) (compound_statement "{\n              _Var9 = Curl_pipeline_wanted(conn->data->multi,1);\n              if (_Var9) {\n                Curl_infof(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread);\n                (conn->bits).stream_was_rewound = true;\n                conn->read_pos = conn->read_pos + (local_4c - iVar24);\n              }\n              else {\n                Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4));\n              }\n              local_4c = (uint)(data->req).maxdownload;\n              local_50 = *(int *)((int)&(data->req).bytecount + 4);\n              local_54 = (uint)(data->req).bytecount;\n            }" { (expression_statement "_Var9 = Curl_pipeline_wanted(conn->data->multi,1);" (assignment_expression "_Var9 = Curl_pipeline_wanted(conn->data->multi,1)" identifier = (call_expression "Curl_pipeline_wanted(conn->data->multi,1)" identifier (argument_list "(conn->data->multi,1)" ( (field_expression "conn->data->multi" (field_expression "conn->data" identifier -> field_identifier) -> field_identifier) , number_literal )))) ;) (if_statement "if (_Var9) {\n                Curl_infof(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread);\n                (conn->bits).stream_was_rewound = true;\n                conn->read_pos = conn->read_pos + (local_4c - iVar24);\n              }\n              else {\n                Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4));\n              }" if (parenthesized_expression "(_Var9)" ( identifier )) (compound_statement "{\n                Curl_infof(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread);\n                (conn->bits).stream_was_rewound = true;\n                conn->read_pos = conn->read_pos + (local_4c - iVar24);\n              }" { (expression_statement "Curl_infof(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread);" (call_expression "Curl_infof(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread)" identifier (argument_list "(data,\n                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"\n                           ,local_40,(data->state).up.path,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4),nread)" ( identifier , (string_literal ""Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"" " string_content escape_sequence ") , identifier , (field_expression "(data->state).up.path" (field_expression "(data->state).up" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier) . field_identifier) , (cast_expression "(int)(data->req).size" ( (type_descriptor "int" primitive_type) ) (field_expression "(data->req).size" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) , (pointer_expression "*(undefined4 *)((int)&(data->req).size + 4)" * (cast_expression "(undefined4 *)((int)&(data->req).size + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).size + 4)" ( (binary_expression "(int)&(data->req).size + 4" (cast_expression "(int)&(data->req).size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).size" & (field_expression "(data->req).size" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) , (cast_expression "(int)(data->req).maxdownload" ( (type_descriptor "int" primitive_type) ) (field_expression "(data->req).maxdownload" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) , (pointer_expression "*(undefined4 *)((int)&(data->req).maxdownload + 4)" * (cast_expression "(undefined4 *)((int)&(data->req).maxdownload + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).maxdownload + 4)" ( (binary_expression "(int)&(data->req).maxdownload + 4" (cast_expression "(int)&(data->req).maxdownload" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).maxdownload" & (field_expression "(data->req).maxdownload" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) , (cast_expression "(int)(data->req).bytecount" ( (type_descriptor "int" primitive_type) ) (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) , (pointer_expression "*(undefined4 *)((int)&(data->req).bytecount + 4)" * (cast_expression "(undefined4 *)((int)&(data->req).bytecount + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).bytecount + 4)" ( (binary_expression "(int)&(data->req).bytecount + 4" (cast_expression "(int)&(data->req).bytecount" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).bytecount" & (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) , identifier ))) ;) (expression_statement "(conn->bits).stream_was_rewound = true;" (assignment_expression "(conn->bits).stream_was_rewound = true" (field_expression "(conn->bits).stream_was_rewound" (parenthesized_expression "(conn->bits)" ( (field_expression "conn->bits" identifier -> field_identifier) )) . field_identifier) = true) ;) (expression_statement "conn->read_pos = conn->read_pos + (local_4c - iVar24);" (assignment_expression "conn->read_pos = conn->read_pos + (local_4c - iVar24)" (field_expression "conn->read_pos" identifier -> field_identifier) = (binary_expression "conn->read_pos + (local_4c - iVar24)" (field_expression "conn->read_pos" identifier -> field_identifier) + (parenthesized_expression "(local_4c - iVar24)" ( (binary_expression "local_4c - iVar24" identifier - identifier) )))) ;) }) (else_clause "else {\n                Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4));\n              }" else (compound_statement "{\n                Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4));\n              }" { (expression_statement "Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4));" (call_expression "Curl_infof(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4))" identifier (argument_list "(data,\n                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"\n                           ,local_40,(int)(data->req).size,\n                           *(undefined4 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,\n                           *(undefined4 *)((int)&(data->req).maxdownload + 4),\n                           (int)(data->req).bytecount,\n                           *(undefined4 *)((int)&(data->req).bytecount + 4))" ( identifier , (string_literal ""Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"" " string_content escape_sequence ") , identifier , (cast_expression "(int)(data->req).size" ( (type_descriptor "int" primitive_type) ) (field_expression "(data->req).size" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) , (pointer_expression "*(undefined4 *)((int)&(data->req).size + 4)" * (cast_expression "(undefined4 *)((int)&(data->req).size + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).size + 4)" ( (binary_expression "(int)&(data->req).size + 4" (cast_expression "(int)&(data->req).size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).size" & (field_expression "(data->req).size" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) , (cast_expression "(int)(data->req).maxdownload" ( (type_descriptor "int" primitive_type) ) (field_expression "(data->req).maxdownload" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) , (pointer_expression "*(undefined4 *)((int)&(data->req).maxdownload + 4)" * (cast_expression "(undefined4 *)((int)&(data->req).maxdownload + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).maxdownload + 4)" ( (binary_expression "(int)&(data->req).maxdownload + 4" (cast_expression "(int)&(data->req).maxdownload" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).maxdownload" & (field_expression "(data->req).maxdownload" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) , (cast_expression "(int)(data->req).bytecount" ( (type_descriptor "int" primitive_type) ) (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) , (pointer_expression "*(undefined4 *)((int)&(data->req).bytecount + 4)" * (cast_expression "(undefined4 *)((int)&(data->req).bytecount + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).bytecount + 4)" ( (binary_expression "(int)&(data->req).bytecount + 4" (cast_expression "(int)&(data->req).bytecount" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).bytecount" & (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) ))) ;) }))) (expression_statement "local_4c = (uint)(data->req).maxdownload;" (assignment_expression "local_4c = (uint)(data->req).maxdownload" identifier = (field_expression "(uint)(data->req).maxdownload" (call_expression "(uint)(data->req)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "local_50 = *(int *)((int)&(data->req).bytecount + 4);" (assignment_expression "local_50 = *(int *)((int)&(data->req).bytecount + 4)" identifier = (pointer_expression "*(int *)((int)&(data->req).bytecount + 4)" * (cast_expression "(int *)((int)&(data->req).bytecount + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).bytecount + 4)" ( (binary_expression "(int)&(data->req).bytecount + 4" (cast_expression "(int)&(data->req).bytecount" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).bytecount" & (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "local_54 = (uint)(data->req).bytecount;" (assignment_expression "local_54 = (uint)(data->req).bytecount" identifier = (field_expression "(uint)(data->req).bytecount" (call_expression "(uint)(data->req)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) ))) . field_identifier)) ;) })) (expression_statement "nread = local_4c - local_54;" (assignment_expression "nread = local_4c - local_54" identifier = (binary_expression "local_4c - local_54" identifier - identifier)) ;) (if_statement "if (nread < 0) {\n              nread = 0;\n              local_4c = local_54;\n              local_48 = local_50;\n            }\n            else {\n              local_4c = nread + local_54;\n              local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n            }" if (parenthesized_expression "(nread < 0)" ( (binary_expression "nread < 0" identifier < number_literal) )) (compound_statement "{\n              nread = 0;\n              local_4c = local_54;\n              local_48 = local_50;\n            }" { (expression_statement "nread = 0;" (assignment_expression "nread = 0" identifier = number_literal) ;) (expression_statement "local_4c = local_54;" (assignment_expression "local_4c = local_54" identifier = identifier) ;) (expression_statement "local_48 = local_50;" (assignment_expression "local_48 = local_50" identifier = identifier) ;) }) (else_clause "else {\n              local_4c = nread + local_54;\n              local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n            }" else (compound_statement "{\n              local_4c = nread + local_54;\n              local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);\n            }" { (expression_statement "local_4c = nread + local_54;" (assignment_expression "local_4c = nread + local_54" identifier = (binary_expression "nread + local_54" identifier + identifier)) ;) (expression_statement "local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54);" (assignment_expression "local_48 = (nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54)" identifier = (binary_expression "(nread >> 0x1f) + local_50 + (uint)CARRY4(nread,local_54)" (binary_expression "(nread >> 0x1f) + local_50" (parenthesized_expression "(nread >> 0x1f)" ( (binary_expression "nread >> 0x1f" identifier >> number_literal) )) + identifier) + (cast_expression "(uint)CARRY4(nread,local_54)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(nread,local_54)" identifier (argument_list "(nread,local_54)" ( identifier , identifier )))))) ;) }))) (expression_statement "piVar2 = &(data->req).keepon;" (assignment_expression "piVar2 = &(data->req).keepon" identifier = (pointer_expression "&(data->req).keepon" & (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*piVar2 = *piVar2 & 0xfffffffe;" (assignment_expression "*piVar2 = *piVar2 & 0xfffffffe" (pointer_expression "*piVar2" * identifier) = (binary_expression "*piVar2 & 0xfffffffe" (pointer_expression "*piVar2" * identifier) & number_literal)) ;) (expression_statement "uVar15 = local_4c;" (assignment_expression "uVar15 = local_4c" identifier = identifier) ;) })) (expression_statement "local_4c = uVar15;" (assignment_expression "local_4c = uVar15" identifier = identifier) ;) (expression_statement "*(uint *)&(data->req).bytecount = local_4c;" (assignment_expression "*(uint *)&(data->req).bytecount = local_4c" (pointer_expression "*(uint *)&(data->req).bytecount" * (cast_expression "(uint *)&(data->req).bytecount" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(data->req).bytecount" & (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)))) = identifier) ;) (expression_statement "*(int *)((int)&(data->req).bytecount + 4) = local_48;" (assignment_expression "*(int *)((int)&(data->req).bytecount + 4) = local_48" (pointer_expression "*(int *)((int)&(data->req).bytecount + 4)" * (cast_expression "(int *)((int)&(data->req).bytecount + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).bytecount + 4)" ( (binary_expression "(int)&(data->req).bytecount + 4" (cast_expression "(int)&(data->req).bytecount" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).bytecount" & (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "Curl_pgrsSetDownloadCounter(data,CONCAT44(local_48,local_4c));" (call_expression "Curl_pgrsSetDownloadCounter(data,CONCAT44(local_48,local_4c))" identifier (argument_list "(data,CONCAT44(local_48,local_4c))" ( identifier , (call_expression "CONCAT44(local_48,local_4c)" identifier (argument_list "(local_48,local_4c)" ( identifier , identifier ))) ))) ;) (if_statement "if ((data->req).chunk != false) goto LAB_00039df2;" if (parenthesized_expression "((data->req).chunk != false)" ( (binary_expression "(data->req).chunk != false" (field_expression "(data->req).chunk" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) != false) )) (goto_statement "goto LAB_00039df2;" goto statement_identifier ;)) (expression_statement "aVar21 = (data->req).badheader;" (assignment_expression "aVar21 = (data->req).badheader" identifier = (field_expression "(data->req).badheader" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((nread == 0 && aVar21 == CURLDIGESTALGO_MD5) && local_6c == 0) goto LAB_0003a318;" if (parenthesized_expression "((nread == 0 && aVar21 == CURLDIGESTALGO_MD5) && local_6c == 0)" ( (binary_expression "(nread == 0 && aVar21 == CURLDIGESTALGO_MD5) && local_6c == 0" (parenthesized_expression "(nread == 0 && aVar21 == CURLDIGESTALGO_MD5)" ( (binary_expression "nread == 0 && aVar21 == CURLDIGESTALGO_MD5" (binary_expression "nread == 0" identifier == number_literal) && (binary_expression "aVar21 == CURLDIGESTALGO_MD5" identifier == identifier)) )) && (binary_expression "local_6c == 0" identifier == number_literal)) )) (goto_statement "goto LAB_0003a318;" goto statement_identifier ;)) (expression_statement "cVar10 = (data->req).ignorebody;" (assignment_expression "cVar10 = (data->req).ignorebody" identifier = (field_expression "(data->req).ignorebody" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (aVar21 == CURLDIGESTALGO_MD5) {\nLAB_0003a358:\n            if (((conn->data->set).http_ce_skip == false) &&\n               (writer = (data->req).writer_stack, writer != (contenc_writer *)0x0)) {\n              if (cVar10 == '\0') {\n                CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            pCVar22 = conn->handler;\n            if (cVar10 == '\0') {\n              pcVar17 = (data->req).str;\n              if ((pCVar22->protocol & 0xc000) == 0) {\n                CVar12 = Curl_client_write(conn,1,pcVar17,nread);\n              }\n              else {\n                CVar12 = Curl_pop3_write(conn,pcVar17,nread);\n              }\nLAB_0003a392:\n              (data->req).badheader = CURLDIGESTALGO_MD5;\n              if (CVar12 == CURLE_OK) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if ((_Bool)cVar10 == false) {\n              uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n              uVar15 = (uint)(data->req).maxdownload;\n              uVar26 = (data->req).hbuflen;\n              if (((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26)))\n              {\n                uVar26 = uVar15;\n              }\n              CVar12 = Curl_client_write(conn,1,(data->state).headerbuff,uVar26);\n              if (CVar12 != CURLE_OK) goto LAB_00039d70;\n              aVar21 = (data->req).badheader;\n            }\n            if ((uint)aVar21 < 2) {\n              cVar10 = (data->req).ignorebody;\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            pCVar22 = conn->handler;\n          }" if (parenthesized_expression "(aVar21 == CURLDIGESTALGO_MD5)" ( (binary_expression "aVar21 == CURLDIGESTALGO_MD5" identifier == identifier) )) (compound_statement "{\nLAB_0003a358:\n            if (((conn->data->set).http_ce_skip == false) &&\n               (writer = (data->req).writer_stack, writer != (contenc_writer *)0x0)) {\n              if (cVar10 == '\0') {\n                CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            pCVar22 = conn->handler;\n            if (cVar10 == '\0') {\n              pcVar17 = (data->req).str;\n              if ((pCVar22->protocol & 0xc000) == 0) {\n                CVar12 = Curl_client_write(conn,1,pcVar17,nread);\n              }\n              else {\n                CVar12 = Curl_pop3_write(conn,pcVar17,nread);\n              }\nLAB_0003a392:\n              (data->req).badheader = CURLDIGESTALGO_MD5;\n              if (CVar12 == CURLE_OK) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }" { (labeled_statement "LAB_0003a358:\n            if (((conn->data->set).http_ce_skip == false) &&\n               (writer = (data->req).writer_stack, writer != (contenc_writer *)0x0)) {\n              if (cVar10 == '\0') {\n                CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }" statement_identifier : (if_statement "if (((conn->data->set).http_ce_skip == false) &&\n               (writer = (data->req).writer_stack, writer != (contenc_writer *)0x0)) {\n              if (cVar10 == '\0') {\n                CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }" if (parenthesized_expression "(((conn->data->set).http_ce_skip == false) &&\n               (writer = (data->req).writer_stack, writer != (contenc_writer *)0x0))" ( (binary_expression "((conn->data->set).http_ce_skip == false) &&\n               (writer = (data->req).writer_stack, writer != (contenc_writer *)0x0)" (parenthesized_expression "((conn->data->set).http_ce_skip == false)" ( (binary_expression "(conn->data->set).http_ce_skip == false" (field_expression "(conn->data->set).http_ce_skip" (parenthesized_expression "(conn->data->set)" ( (field_expression "conn->data->set" (field_expression "conn->data" identifier -> field_identifier) -> field_identifier) )) . field_identifier) == false) )) && (parenthesized_expression "(writer = (data->req).writer_stack, writer != (contenc_writer *)0x0)" ( (comma_expression "writer = (data->req).writer_stack, writer != (contenc_writer *)0x0" (assignment_expression "writer = (data->req).writer_stack" identifier = (field_expression "(data->req).writer_stack" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) , (binary_expression "writer != (contenc_writer *)0x0" identifier != (cast_expression "(contenc_writer *)0x0" ( (type_descriptor "contenc_writer *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n              if (cVar10 == '\0') {\n                CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }" { (if_statement "if (cVar10 == '\0') {\n                CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);\n                goto LAB_0003a392;\n              }" if (parenthesized_expression "(cVar10 == '\0')" ( (binary_expression "cVar10 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);\n                goto LAB_0003a392;\n              }" { (expression_statement "CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread);" (assignment_expression "CVar12 = Curl_unencode_write(conn,writer,(data->req).str,nread)" identifier = (call_expression "Curl_unencode_write(conn,writer,(data->req).str,nread)" identifier (argument_list "(conn,writer,(data->req).str,nread)" ( identifier , identifier , (field_expression "(data->req).str" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) , identifier )))) ;) (goto_statement "goto LAB_0003a392;" goto statement_identifier ;) })) (goto_statement "goto LAB_0003a1c7;" goto statement_identifier ;) }))) (expression_statement "pCVar22 = conn->handler;" (assignment_expression "pCVar22 = conn->handler" identifier = (field_expression "conn->handler" identifier -> field_identifier)) ;) (if_statement "if (cVar10 == '\0') {\n              pcVar17 = (data->req).str;\n              if ((pCVar22->protocol & 0xc000) == 0) {\n                CVar12 = Curl_client_write(conn,1,pcVar17,nread);\n              }\n              else {\n                CVar12 = Curl_pop3_write(conn,pcVar17,nread);\n              }\nLAB_0003a392:\n              (data->req).badheader = CURLDIGESTALGO_MD5;\n              if (CVar12 == CURLE_OK) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }" if (parenthesized_expression "(cVar10 == '\0')" ( (binary_expression "cVar10 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              pcVar17 = (data->req).str;\n              if ((pCVar22->protocol & 0xc000) == 0) {\n                CVar12 = Curl_client_write(conn,1,pcVar17,nread);\n              }\n              else {\n                CVar12 = Curl_pop3_write(conn,pcVar17,nread);\n              }\nLAB_0003a392:\n              (data->req).badheader = CURLDIGESTALGO_MD5;\n              if (CVar12 == CURLE_OK) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }" { (expression_statement "pcVar17 = (data->req).str;" (assignment_expression "pcVar17 = (data->req).str" identifier = (field_expression "(data->req).str" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((pCVar22->protocol & 0xc000) == 0) {\n                CVar12 = Curl_client_write(conn,1,pcVar17,nread);\n              }\n              else {\n                CVar12 = Curl_pop3_write(conn,pcVar17,nread);\n              }" if (parenthesized_expression "((pCVar22->protocol & 0xc000) == 0)" ( (binary_expression "(pCVar22->protocol & 0xc000) == 0" (parenthesized_expression "(pCVar22->protocol & 0xc000)" ( (binary_expression "pCVar22->protocol & 0xc000" (field_expression "pCVar22->protocol" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                CVar12 = Curl_client_write(conn,1,pcVar17,nread);\n              }" { (expression_statement "CVar12 = Curl_client_write(conn,1,pcVar17,nread);" (assignment_expression "CVar12 = Curl_client_write(conn,1,pcVar17,nread)" identifier = (call_expression "Curl_client_write(conn,1,pcVar17,nread)" identifier (argument_list "(conn,1,pcVar17,nread)" ( identifier , number_literal , identifier , identifier )))) ;) }) (else_clause "else {\n                CVar12 = Curl_pop3_write(conn,pcVar17,nread);\n              }" else (compound_statement "{\n                CVar12 = Curl_pop3_write(conn,pcVar17,nread);\n              }" { (expression_statement "CVar12 = Curl_pop3_write(conn,pcVar17,nread);" (assignment_expression "CVar12 = Curl_pop3_write(conn,pcVar17,nread)" identifier = (call_expression "Curl_pop3_write(conn,pcVar17,nread)" identifier (argument_list "(conn,pcVar17,nread)" ( identifier , identifier , identifier )))) ;) }))) (labeled_statement "LAB_0003a392:\n              (data->req).badheader = CURLDIGESTALGO_MD5;" statement_identifier : (expression_statement "(data->req).badheader = CURLDIGESTALGO_MD5;" (assignment_expression "(data->req).badheader = CURLDIGESTALGO_MD5" (field_expression "(data->req).badheader" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) = identifier) ;)) (if_statement "if (CVar12 == CURLE_OK) goto LAB_00039df2;" if (parenthesized_expression "(CVar12 == CURLE_OK)" ( (binary_expression "CVar12 == CURLE_OK" identifier == identifier) )) (goto_statement "goto LAB_00039df2;" goto statement_identifier ;)) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) }) (else_clause "else {\n            if ((_Bool)cVar10 == false) {\n              uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n              uVar15 = (uint)(data->req).maxdownload;\n              uVar26 = (data->req).hbuflen;\n              if (((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26)))\n              {\n                uVar26 = uVar15;\n              }\n              CVar12 = Curl_client_write(conn,1,(data->state).headerbuff,uVar26);\n              if (CVar12 != CURLE_OK) goto LAB_00039d70;\n              aVar21 = (data->req).badheader;\n            }\n            if ((uint)aVar21 < 2) {\n              cVar10 = (data->req).ignorebody;\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            pCVar22 = conn->handler;\n          }" else (compound_statement "{\n            if ((_Bool)cVar10 == false) {\n              uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n              uVar15 = (uint)(data->req).maxdownload;\n              uVar26 = (data->req).hbuflen;\n              if (((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26)))\n              {\n                uVar26 = uVar15;\n              }\n              CVar12 = Curl_client_write(conn,1,(data->state).headerbuff,uVar26);\n              if (CVar12 != CURLE_OK) goto LAB_00039d70;\n              aVar21 = (data->req).badheader;\n            }\n            if ((uint)aVar21 < 2) {\n              cVar10 = (data->req).ignorebody;\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            pCVar22 = conn->handler;\n          }" { (if_statement "if ((_Bool)cVar10 == false) {\n              uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n              uVar15 = (uint)(data->req).maxdownload;\n              uVar26 = (data->req).hbuflen;\n              if (((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26)))\n              {\n                uVar26 = uVar15;\n              }\n              CVar12 = Curl_client_write(conn,1,(data->state).headerbuff,uVar26);\n              if (CVar12 != CURLE_OK) goto LAB_00039d70;\n              aVar21 = (data->req).badheader;\n            }" if (parenthesized_expression "((_Bool)cVar10 == false)" ( (binary_expression "(_Bool)cVar10 == false" (cast_expression "(_Bool)cVar10" ( (type_descriptor "_Bool" type_identifier) ) identifier) == false) )) (compound_statement "{\n              uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);\n              uVar15 = (uint)(data->req).maxdownload;\n              uVar26 = (data->req).hbuflen;\n              if (((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26)))\n              {\n                uVar26 = uVar15;\n              }\n              CVar12 = Curl_client_write(conn,1,(data->state).headerbuff,uVar26);\n              if (CVar12 != CURLE_OK) goto LAB_00039d70;\n              aVar21 = (data->req).badheader;\n            }" { (expression_statement "uVar14 = *(uint *)((int)&(data->req).maxdownload + 4);" (assignment_expression "uVar14 = *(uint *)((int)&(data->req).maxdownload + 4)" identifier = (pointer_expression "*(uint *)((int)&(data->req).maxdownload + 4)" * (cast_expression "(uint *)((int)&(data->req).maxdownload + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).maxdownload + 4)" ( (binary_expression "(int)&(data->req).maxdownload + 4" (cast_expression "(int)&(data->req).maxdownload" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).maxdownload" & (field_expression "(data->req).maxdownload" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar15 = (uint)(data->req).maxdownload;" (assignment_expression "uVar15 = (uint)(data->req).maxdownload" identifier = (field_expression "(uint)(data->req).maxdownload" (call_expression "(uint)(data->req)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "uVar26 = (data->req).hbuflen;" (assignment_expression "uVar26 = (data->req).hbuflen" identifier = (field_expression "(data->req).hbuflen" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26)))\n              {\n                uVar26 = uVar15;\n              }" if (parenthesized_expression "(((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26)))" ( (binary_expression "((uVar14 & uVar15) != 0xffffffff) && ((int)uVar14 < (int)(uint)(uVar15 < uVar26))" (parenthesized_expression "((uVar14 & uVar15) != 0xffffffff)" ( (binary_expression "(uVar14 & uVar15) != 0xffffffff" (parenthesized_expression "(uVar14 & uVar15)" ( (binary_expression "uVar14 & uVar15" identifier & identifier) )) != number_literal) )) && (parenthesized_expression "((int)uVar14 < (int)(uint)(uVar15 < uVar26))" ( (binary_expression "(int)uVar14 < (int)(uint)(uVar15 < uVar26)" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)(uint)(uVar15 < uVar26)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(uVar15 < uVar26)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar15 < uVar26)" ( (binary_expression "uVar15 < uVar26" identifier < identifier) ))))) ))) )) (compound_statement "{\n                uVar26 = uVar15;\n              }" { (expression_statement "uVar26 = uVar15;" (assignment_expression "uVar26 = uVar15" identifier = identifier) ;) })) (expression_statement "CVar12 = Curl_client_write(conn,1,(data->state).headerbuff,uVar26);" (assignment_expression "CVar12 = Curl_client_write(conn,1,(data->state).headerbuff,uVar26)" identifier = (call_expression "Curl_client_write(conn,1,(data->state).headerbuff,uVar26)" identifier (argument_list "(conn,1,(data->state).headerbuff,uVar26)" ( identifier , number_literal , (field_expression "(data->state).headerbuff" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier) , identifier )))) ;) (if_statement "if (CVar12 != CURLE_OK) goto LAB_00039d70;" if (parenthesized_expression "(CVar12 != CURLE_OK)" ( (binary_expression "CVar12 != CURLE_OK" identifier != identifier) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (expression_statement "aVar21 = (data->req).badheader;" (assignment_expression "aVar21 = (data->req).badheader" identifier = (field_expression "(data->req).badheader" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) })) (if_statement "if ((uint)aVar21 < 2) {\n              cVar10 = (data->req).ignorebody;\n              goto LAB_0003a358;\n            }" if (parenthesized_expression "((uint)aVar21 < 2)" ( (binary_expression "(uint)aVar21 < 2" (cast_expression "(uint)aVar21" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) )) (compound_statement "{\n              cVar10 = (data->req).ignorebody;\n              goto LAB_0003a358;\n            }" { (expression_statement "cVar10 = (data->req).ignorebody;" (assignment_expression "cVar10 = (data->req).ignorebody" identifier = (field_expression "(data->req).ignorebody" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) (goto_statement "goto LAB_0003a358;" goto statement_identifier ;) })) (labeled_statement "LAB_0003a1c7:\n            pCVar22 = conn->handler;" statement_identifier : (expression_statement "pCVar22 = conn->handler;" (assignment_expression "pCVar22 = conn->handler" identifier = (field_expression "conn->handler" identifier -> field_identifier)) ;)) }))) (expression_statement "(data->req).badheader = CURLDIGESTALGO_MD5;" (assignment_expression "(data->req).badheader = CURLDIGESTALGO_MD5" (field_expression "(data->req).badheader" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (goto_statement "goto LAB_00039df8;" goto statement_identifier ;) }))) (labeled_statement "LAB_0003a318:\n        pCVar22 = conn->handler;" statement_identifier : (expression_statement "pCVar22 = conn->handler;" (assignment_expression "pCVar22 = conn->handler" identifier = (field_expression "conn->handler" identifier -> field_identifier)) ;)) (expression_statement "p_Var13 = pCVar22->readwrite;" (assignment_expression "p_Var13 = pCVar22->readwrite" identifier = (field_expression "pCVar22->readwrite" identifier -> field_identifier)) ;) (if_statement "if (p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)\n        goto LAB_00039dff;" if (parenthesized_expression "(p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0)" ( (binary_expression "p_Var13 != (_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0" identifier != (cast_expression "(_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *)0x0" ( (type_descriptor "_func_CURLcode_Curl_easy_ptr_connectdata_ptr_ssize_t_ptr__Bool_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00039dff;" goto statement_identifier ;)) (expression_statement "uVar14 = (data->req).keepon;" (assignment_expression "uVar14 = (data->req).keepon" identifier = (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) }))) (if_statement "if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;" if (parenthesized_expression "((uVar14 & 0x10) != 0)" ( (binary_expression "(uVar14 & 0x10) != 0" (parenthesized_expression "(uVar14 & 0x10)" ( (binary_expression "uVar14 & 0x10" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0003a00e;" goto statement_identifier ;)) (if_statement "if ((((pCVar22->protocol & 0x30) == 0) && (_Var9 = Curl_ssl_data_pending(conn,0), !_Var9)) &&\n         (((conn->handler->protocol & 3) == 0 || (conn->httpversion != 0x14)))) goto LAB_0003a008;" if (parenthesized_expression "((((pCVar22->protocol & 0x30) == 0) && (_Var9 = Curl_ssl_data_pending(conn,0), !_Var9)) &&\n         (((conn->handler->protocol & 3) == 0 || (conn->httpversion != 0x14))))" ( (binary_expression "(((pCVar22->protocol & 0x30) == 0) && (_Var9 = Curl_ssl_data_pending(conn,0), !_Var9)) &&\n         (((conn->handler->protocol & 3) == 0 || (conn->httpversion != 0x14)))" (parenthesized_expression "(((pCVar22->protocol & 0x30) == 0) && (_Var9 = Curl_ssl_data_pending(conn,0), !_Var9))" ( (binary_expression "((pCVar22->protocol & 0x30) == 0) && (_Var9 = Curl_ssl_data_pending(conn,0), !_Var9)" (parenthesized_expression "((pCVar22->protocol & 0x30) == 0)" ( (binary_expression "(pCVar22->protocol & 0x30) == 0" (parenthesized_expression "(pCVar22->protocol & 0x30)" ( (binary_expression "pCVar22->protocol & 0x30" (field_expression "pCVar22->protocol" identifier -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(_Var9 = Curl_ssl_data_pending(conn,0), !_Var9)" ( (comma_expression "_Var9 = Curl_ssl_data_pending(conn,0), !_Var9" (assignment_expression "_Var9 = Curl_ssl_data_pending(conn,0)" identifier = (call_expression "Curl_ssl_data_pending(conn,0)" identifier (argument_list "(conn,0)" ( identifier , number_literal )))) , (unary_expression "!_Var9" ! identifier)) ))) )) && (parenthesized_expression "(((conn->handler->protocol & 3) == 0 || (conn->httpversion != 0x14)))" ( (parenthesized_expression "((conn->handler->protocol & 3) == 0 || (conn->httpversion != 0x14))" ( (binary_expression "(conn->handler->protocol & 3) == 0 || (conn->httpversion != 0x14)" (binary_expression "(conn->handler->protocol & 3) == 0" (parenthesized_expression "(conn->handler->protocol & 3)" ( (binary_expression "conn->handler->protocol & 3" (field_expression "conn->handler->protocol" (field_expression "conn->handler" identifier -> field_identifier) -> field_identifier) & number_literal) )) == number_literal) || (parenthesized_expression "(conn->httpversion != 0x14)" ( (binary_expression "conn->httpversion != 0x14" (field_expression "conn->httpversion" identifier -> field_identifier) != number_literal) ))) )) ))) )) (goto_statement "goto LAB_0003a008;" goto statement_identifier ;)) (expression_statement "local_60 = local_60 + -1;" (assignment_expression "local_60 = local_60 + -1" identifier = (binary_expression "local_60 + -1" identifier + number_literal)) ;) (expression_statement "local_6c = local_5c;" (assignment_expression "local_6c = local_5c" identifier = identifier) ;) }) while (parenthesized_expression "(local_60 != -1)" ( (binary_expression "local_60 != -1" identifier != number_literal) )) ;) (expression_statement "uVar14 = (data->req).keepon;" (assignment_expression "uVar14 = (data->req).keepon" identifier = (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) (labeled_statement "LAB_00039e5f:\n    conn->cselect_bits = 1;" statement_identifier : (expression_statement "conn->cselect_bits = 1;" (assignment_expression "conn->cselect_bits = 1" (field_expression "conn->cselect_bits" identifier -> field_identifier) = number_literal) ;)) (expression_statement "*comeback = true;" (assignment_expression "*comeback = true" (pointer_expression "*comeback" * identifier) = true) ;) (labeled_statement "joined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && ((conn->bits).close != false)) {\n      Curl_infof(data,"we are done reading and this is set to close, stop send\n");\n      piVar2 = &(data->req).keepon;\n      *piVar2 = *piVar2 & 0xfffffffd;\n      if (*done != false) {\nLAB_0003a468:\n        CVar12 = CURLE_OK;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (*done != false) goto LAB_0003a468;\n      if ((((data->req).keepon & 2) != 0) && (((uint)local_74 & 2) != 0)) goto LAB_00039b2b;\n    }" statement_identifier : (if_statement "if (((uVar14 & 3) == 2) && ((conn->bits).close != false)) {\n      Curl_infof(data,"we are done reading and this is set to close, stop send\n");\n      piVar2 = &(data->req).keepon;\n      *piVar2 = *piVar2 & 0xfffffffd;\n      if (*done != false) {\nLAB_0003a468:\n        CVar12 = CURLE_OK;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (*done != false) goto LAB_0003a468;\n      if ((((data->req).keepon & 2) != 0) && (((uint)local_74 & 2) != 0)) goto LAB_00039b2b;\n    }" if (parenthesized_expression "(((uVar14 & 3) == 2) && ((conn->bits).close != false))" ( (binary_expression "((uVar14 & 3) == 2) && ((conn->bits).close != false)" (parenthesized_expression "((uVar14 & 3) == 2)" ( (binary_expression "(uVar14 & 3) == 2" (parenthesized_expression "(uVar14 & 3)" ( (binary_expression "uVar14 & 3" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((conn->bits).close != false)" ( (binary_expression "(conn->bits).close != false" (field_expression "(conn->bits).close" (parenthesized_expression "(conn->bits)" ( (field_expression "conn->bits" identifier -> field_identifier) )) . field_identifier) != false) ))) )) (compound_statement "{\n      Curl_infof(data,"we are done reading and this is set to close, stop send\n");\n      piVar2 = &(data->req).keepon;\n      *piVar2 = *piVar2 & 0xfffffffd;\n      if (*done != false) {\nLAB_0003a468:\n        CVar12 = CURLE_OK;\n        goto LAB_00039d70;\n      }\n    }" { (expression_statement "Curl_infof(data,"we are done reading and this is set to close, stop send\n");" (call_expression "Curl_infof(data,"we are done reading and this is set to close, stop send\n")" identifier (argument_list "(data,"we are done reading and this is set to close, stop send\n")" ( identifier , (string_literal ""we are done reading and this is set to close, stop send\n"" " string_content escape_sequence ") ))) ;) (expression_statement "piVar2 = &(data->req).keepon;" (assignment_expression "piVar2 = &(data->req).keepon" identifier = (pointer_expression "&(data->req).keepon" & (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*piVar2 = *piVar2 & 0xfffffffd;" (assignment_expression "*piVar2 = *piVar2 & 0xfffffffd" (pointer_expression "*piVar2" * identifier) = (binary_expression "*piVar2 & 0xfffffffd" (pointer_expression "*piVar2" * identifier) & number_literal)) ;) (if_statement "if (*done != false) {\nLAB_0003a468:\n        CVar12 = CURLE_OK;\n        goto LAB_00039d70;\n      }" if (parenthesized_expression "(*done != false)" ( (binary_expression "*done != false" (pointer_expression "*done" * identifier) != false) )) (compound_statement "{\nLAB_0003a468:\n        CVar12 = CURLE_OK;\n        goto LAB_00039d70;\n      }" { (labeled_statement "LAB_0003a468:\n        CVar12 = CURLE_OK;" statement_identifier : (expression_statement "CVar12 = CURLE_OK;" (assignment_expression "CVar12 = CURLE_OK" identifier = identifier) ;)) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_00039e7c:\n      if (*done != false) goto LAB_0003a468;\n      if ((((data->req).keepon & 2) != 0) && (((uint)local_74 & 2) != 0)) goto LAB_00039b2b;\n    }" else (compound_statement "{\nLAB_00039e7c:\n      if (*done != false) goto LAB_0003a468;\n      if ((((data->req).keepon & 2) != 0) && (((uint)local_74 & 2) != 0)) goto LAB_00039b2b;\n    }" { (labeled_statement "LAB_00039e7c:\n      if (*done != false) goto LAB_0003a468;" statement_identifier : (if_statement "if (*done != false) goto LAB_0003a468;" if (parenthesized_expression "(*done != false)" ( (binary_expression "*done != false" (pointer_expression "*done" * identifier) != false) )) (goto_statement "goto LAB_0003a468;" goto statement_identifier ;))) (if_statement "if ((((data->req).keepon & 2) != 0) && (((uint)local_74 & 2) != 0)) goto LAB_00039b2b;" if (parenthesized_expression "((((data->req).keepon & 2) != 0) && (((uint)local_74 & 2) != 0))" ( (binary_expression "(((data->req).keepon & 2) != 0) && (((uint)local_74 & 2) != 0)" (parenthesized_expression "(((data->req).keepon & 2) != 0)" ( (binary_expression "((data->req).keepon & 2) != 0" (parenthesized_expression "((data->req).keepon & 2)" ( (binary_expression "(data->req).keepon & 2" (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "(((uint)local_74 & 2) != 0)" ( (binary_expression "((uint)local_74 & 2) != 0" (parenthesized_expression "((uint)local_74 & 2)" ( (binary_expression "(uint)local_74 & 2" (cast_expression "(uint)local_74" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) ))) )) (goto_statement "goto LAB_00039b2b;" goto statement_identifier ;)) })))) (labeled_statement "LAB_00039ea1:\n    Curl_now();" statement_identifier : (expression_statement "Curl_now();" (call_expression "Curl_now()" identifier (argument_list "()" ( ))) ;)) (expression_statement "(data->req).now.tv_sec = local_34;" (assignment_expression "(data->req).now.tv_sec = local_34" (field_expression "(data->req).now.tv_sec" (field_expression "(data->req).now" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(data->req).now.tv_usec = iStack_30;" (assignment_expression "(data->req).now.tv_usec = iStack_30" (field_expression "(data->req).now.tv_usec" (field_expression "(data->req).now" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (if_statement "if (local_5c == 0) goto LAB_00039c5c;" if (parenthesized_expression "(local_5c == 0)" ( (binary_expression "local_5c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00039c5c;" goto statement_identifier ;)) (labeled_statement "LAB_00039ecb:\n    pcVar4 = (data->req).bytecountp;" statement_identifier : (expression_statement "pcVar4 = (data->req).bytecountp;" (assignment_expression "pcVar4 = (data->req).bytecountp" identifier = (field_expression "(data->req).bytecountp" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;)) (if_statement "if (pcVar4 != (curl_off_t *)0x0) {\n      uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4);\n      *(int *)pcVar4 = (int)(data->req).bytecount;\n      *(undefined4 *)((int)pcVar4 + 4) = uVar5;\n    }" if (parenthesized_expression "(pcVar4 != (curl_off_t *)0x0)" ( (binary_expression "pcVar4 != (curl_off_t *)0x0" identifier != (cast_expression "(curl_off_t *)0x0" ( (type_descriptor "curl_off_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4);\n      *(int *)pcVar4 = (int)(data->req).bytecount;\n      *(undefined4 *)((int)pcVar4 + 4) = uVar5;\n    }" { (expression_statement "uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4);" (assignment_expression "uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&(data->req).bytecount + 4)" * (cast_expression "(undefined4 *)((int)&(data->req).bytecount + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).bytecount + 4)" ( (binary_expression "(int)&(data->req).bytecount + 4" (cast_expression "(int)&(data->req).bytecount" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).bytecount" & (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "*(int *)pcVar4 = (int)(data->req).bytecount;" (assignment_expression "*(int *)pcVar4 = (int)(data->req).bytecount" (pointer_expression "*(int *)pcVar4" * (cast_expression "(int *)pcVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(int)(data->req).bytecount" ( (type_descriptor "int" primitive_type) ) (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*(undefined4 *)((int)pcVar4 + 4) = uVar5;" (assignment_expression "*(undefined4 *)((int)pcVar4 + 4) = uVar5" (pointer_expression "*(undefined4 *)((int)pcVar4 + 4)" * (cast_expression "(undefined4 *)((int)pcVar4 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pcVar4 + 4)" ( (binary_expression "(int)pcVar4 + 4" (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) })) (expression_statement "pcVar4 = (data->req).writebytecountp;" (assignment_expression "pcVar4 = (data->req).writebytecountp" identifier = (field_expression "(data->req).writebytecountp" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (pcVar4 == (curl_off_t *)0x0) goto LAB_00039c69;" if (parenthesized_expression "(pcVar4 == (curl_off_t *)0x0)" ( (binary_expression "pcVar4 == (curl_off_t *)0x0" identifier == (cast_expression "(curl_off_t *)0x0" ( (type_descriptor "curl_off_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00039c69;" goto statement_identifier ;)) (expression_statement "uVar5 = *(undefined4 *)((int)&(data->req).writebytecount + 4);" (assignment_expression "uVar5 = *(undefined4 *)((int)&(data->req).writebytecount + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&(data->req).writebytecount + 4)" * (cast_expression "(undefined4 *)((int)&(data->req).writebytecount + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).writebytecount + 4)" ( (binary_expression "(int)&(data->req).writebytecount + 4" (cast_expression "(int)&(data->req).writebytecount" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).writebytecount" & (field_expression "(data->req).writebytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "*(int *)pcVar4 = (int)(data->req).writebytecount;" (assignment_expression "*(int *)pcVar4 = (int)(data->req).writebytecount" (pointer_expression "*(int *)pcVar4" * (cast_expression "(int *)pcVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(int)(data->req).writebytecount" ( (type_descriptor "int" primitive_type) ) (field_expression "(data->req).writebytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*(undefined4 *)((int)pcVar4 + 4) = uVar5;" (assignment_expression "*(undefined4 *)((int)pcVar4 + 4) = uVar5" (pointer_expression "*(undefined4 *)((int)pcVar4 + 4)" * (cast_expression "(undefined4 *)((int)pcVar4 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pcVar4 + 4)" ( (binary_expression "(int)pcVar4 + 4" (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "iVar24 = Curl_pgrsUpdate(conn);" (assignment_expression "iVar24 = Curl_pgrsUpdate(conn)" identifier = (call_expression "Curl_pgrsUpdate(conn)" identifier (argument_list "(conn)" ( identifier )))) ;) }))) (if_statement "if (iVar24 == 0) {\n    iVar24 = (data->req).now.tv_usec;\n    CVar12 = Curl_speedcheck(data,(data->req).now);\n    if (CVar12 != CURLE_OK) goto LAB_00039d70;\n    if ((data->req).keepon == 0) {\n      if ((data->set).opt_no_body == false) {\n        uVar14 = (uint)(data->req).size;\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        if ((uVar15 & uVar14) == 0xffffffff) {\nLAB_0003a470:\n          if (((data->req).chunk == false) || ((conn->chunk).state == CHUNK_STOP))\n          goto LAB_0003a483;\n          pcVar17 = "transfer closed with outstanding read data remaining";\n        }\n        else {\n          uVar26 = *(uint *)((int)&(data->req).bytecount + 4);\n          uVar11 = (uint)(data->req).bytecount;\n          if (((uVar26 == uVar15 && uVar14 == uVar11) ||\n              (pcVar4 = &(data->state).crlf_conversions,\n              uVar26 == uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +\n                        (uint)CARRY4(uVar14,(uint)*pcVar4) && uVar11 == uVar14 + (int)*pcVar4)) ||\n             ((data->req).newurl != (char *)0x0)) goto LAB_0003a470;\n          iVar24 = uVar14 - uVar11;\n          pcVar17 = "transfer closed with %lld bytes remaining to read";\n        }\n        CVar12 = CURLE_PARTIAL_FILE;\n        Curl_failf(data,pcVar17,iVar24);\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      iVar24 = Curl_pgrsUpdate(conn);\n      if (iVar24 != 0) goto LAB_00039f19;\n    }\n    else {\n      tVar16 = Curl_timeleft(data,&(data->req).now,false);\n      if (tVar16 < 0) {\n        uVar14 = (uint)(data->req).size;\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        cVar7 = (data->req).bytecount;\n        uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4);\n        if ((uVar14 & uVar15) == 0xffffffff) {\n          pcVar3 = &(data->progress).t_startsingle;\n          uVar15 = pcVar3->tv_sec;\n          uVar14 = (data->req).now.tv_usec;\n          tVar16 = Curl_timediff((data->req).now,*pcVar3);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld bytes received";\n        }\n        else {\n          tVar16 = Curl_timediff((data->req).now,(data->progress).t_startsingle);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld out of %lld bytes received"\n          ;\n        }\n        CVar12 = CURLE_OPERATION_TIMEDOUT;\n        Curl_failf(data,pcVar17,tVar16,(int)cVar7,uVar5,uVar14,uVar15);\n        goto LAB_00039d70;\n      }\n    }\n    *done = ((data->req).keepon & 0x33) == 0;\n  }\n  else {\nLAB_00039f19:\n    CVar12 = CURLE_ABORTED_BY_CALLBACK;\n  }" if (parenthesized_expression "(iVar24 == 0)" ( (binary_expression "iVar24 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar24 = (data->req).now.tv_usec;\n    CVar12 = Curl_speedcheck(data,(data->req).now);\n    if (CVar12 != CURLE_OK) goto LAB_00039d70;\n    if ((data->req).keepon == 0) {\n      if ((data->set).opt_no_body == false) {\n        uVar14 = (uint)(data->req).size;\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        if ((uVar15 & uVar14) == 0xffffffff) {\nLAB_0003a470:\n          if (((data->req).chunk == false) || ((conn->chunk).state == CHUNK_STOP))\n          goto LAB_0003a483;\n          pcVar17 = "transfer closed with outstanding read data remaining";\n        }\n        else {\n          uVar26 = *(uint *)((int)&(data->req).bytecount + 4);\n          uVar11 = (uint)(data->req).bytecount;\n          if (((uVar26 == uVar15 && uVar14 == uVar11) ||\n              (pcVar4 = &(data->state).crlf_conversions,\n              uVar26 == uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +\n                        (uint)CARRY4(uVar14,(uint)*pcVar4) && uVar11 == uVar14 + (int)*pcVar4)) ||\n             ((data->req).newurl != (char *)0x0)) goto LAB_0003a470;\n          iVar24 = uVar14 - uVar11;\n          pcVar17 = "transfer closed with %lld bytes remaining to read";\n        }\n        CVar12 = CURLE_PARTIAL_FILE;\n        Curl_failf(data,pcVar17,iVar24);\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      iVar24 = Curl_pgrsUpdate(conn);\n      if (iVar24 != 0) goto LAB_00039f19;\n    }\n    else {\n      tVar16 = Curl_timeleft(data,&(data->req).now,false);\n      if (tVar16 < 0) {\n        uVar14 = (uint)(data->req).size;\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        cVar7 = (data->req).bytecount;\n        uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4);\n        if ((uVar14 & uVar15) == 0xffffffff) {\n          pcVar3 = &(data->progress).t_startsingle;\n          uVar15 = pcVar3->tv_sec;\n          uVar14 = (data->req).now.tv_usec;\n          tVar16 = Curl_timediff((data->req).now,*pcVar3);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld bytes received";\n        }\n        else {\n          tVar16 = Curl_timediff((data->req).now,(data->progress).t_startsingle);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld out of %lld bytes received"\n          ;\n        }\n        CVar12 = CURLE_OPERATION_TIMEDOUT;\n        Curl_failf(data,pcVar17,tVar16,(int)cVar7,uVar5,uVar14,uVar15);\n        goto LAB_00039d70;\n      }\n    }\n    *done = ((data->req).keepon & 0x33) == 0;\n  }" { (expression_statement "iVar24 = (data->req).now.tv_usec;" (assignment_expression "iVar24 = (data->req).now.tv_usec" identifier = (field_expression "(data->req).now.tv_usec" (field_expression "(data->req).now" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "CVar12 = Curl_speedcheck(data,(data->req).now);" (assignment_expression "CVar12 = Curl_speedcheck(data,(data->req).now)" identifier = (call_expression "Curl_speedcheck(data,(data->req).now)" identifier (argument_list "(data,(data->req).now)" ( identifier , (field_expression "(data->req).now" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) )))) ;) (if_statement "if (CVar12 != CURLE_OK) goto LAB_00039d70;" if (parenthesized_expression "(CVar12 != CURLE_OK)" ( (binary_expression "CVar12 != CURLE_OK" identifier != identifier) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (if_statement "if ((data->req).keepon == 0) {\n      if ((data->set).opt_no_body == false) {\n        uVar14 = (uint)(data->req).size;\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        if ((uVar15 & uVar14) == 0xffffffff) {\nLAB_0003a470:\n          if (((data->req).chunk == false) || ((conn->chunk).state == CHUNK_STOP))\n          goto LAB_0003a483;\n          pcVar17 = "transfer closed with outstanding read data remaining";\n        }\n        else {\n          uVar26 = *(uint *)((int)&(data->req).bytecount + 4);\n          uVar11 = (uint)(data->req).bytecount;\n          if (((uVar26 == uVar15 && uVar14 == uVar11) ||\n              (pcVar4 = &(data->state).crlf_conversions,\n              uVar26 == uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +\n                        (uint)CARRY4(uVar14,(uint)*pcVar4) && uVar11 == uVar14 + (int)*pcVar4)) ||\n             ((data->req).newurl != (char *)0x0)) goto LAB_0003a470;\n          iVar24 = uVar14 - uVar11;\n          pcVar17 = "transfer closed with %lld bytes remaining to read";\n        }\n        CVar12 = CURLE_PARTIAL_FILE;\n        Curl_failf(data,pcVar17,iVar24);\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      iVar24 = Curl_pgrsUpdate(conn);\n      if (iVar24 != 0) goto LAB_00039f19;\n    }\n    else {\n      tVar16 = Curl_timeleft(data,&(data->req).now,false);\n      if (tVar16 < 0) {\n        uVar14 = (uint)(data->req).size;\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        cVar7 = (data->req).bytecount;\n        uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4);\n        if ((uVar14 & uVar15) == 0xffffffff) {\n          pcVar3 = &(data->progress).t_startsingle;\n          uVar15 = pcVar3->tv_sec;\n          uVar14 = (data->req).now.tv_usec;\n          tVar16 = Curl_timediff((data->req).now,*pcVar3);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld bytes received";\n        }\n        else {\n          tVar16 = Curl_timediff((data->req).now,(data->progress).t_startsingle);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld out of %lld bytes received"\n          ;\n        }\n        CVar12 = CURLE_OPERATION_TIMEDOUT;\n        Curl_failf(data,pcVar17,tVar16,(int)cVar7,uVar5,uVar14,uVar15);\n        goto LAB_00039d70;\n      }\n    }" if (parenthesized_expression "((data->req).keepon == 0)" ( (binary_expression "(data->req).keepon == 0" (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) == number_literal) )) (compound_statement "{\n      if ((data->set).opt_no_body == false) {\n        uVar14 = (uint)(data->req).size;\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        if ((uVar15 & uVar14) == 0xffffffff) {\nLAB_0003a470:\n          if (((data->req).chunk == false) || ((conn->chunk).state == CHUNK_STOP))\n          goto LAB_0003a483;\n          pcVar17 = "transfer closed with outstanding read data remaining";\n        }\n        else {\n          uVar26 = *(uint *)((int)&(data->req).bytecount + 4);\n          uVar11 = (uint)(data->req).bytecount;\n          if (((uVar26 == uVar15 && uVar14 == uVar11) ||\n              (pcVar4 = &(data->state).crlf_conversions,\n              uVar26 == uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +\n                        (uint)CARRY4(uVar14,(uint)*pcVar4) && uVar11 == uVar14 + (int)*pcVar4)) ||\n             ((data->req).newurl != (char *)0x0)) goto LAB_0003a470;\n          iVar24 = uVar14 - uVar11;\n          pcVar17 = "transfer closed with %lld bytes remaining to read";\n        }\n        CVar12 = CURLE_PARTIAL_FILE;\n        Curl_failf(data,pcVar17,iVar24);\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      iVar24 = Curl_pgrsUpdate(conn);\n      if (iVar24 != 0) goto LAB_00039f19;\n    }" { (if_statement "if ((data->set).opt_no_body == false) {\n        uVar14 = (uint)(data->req).size;\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        if ((uVar15 & uVar14) == 0xffffffff) {\nLAB_0003a470:\n          if (((data->req).chunk == false) || ((conn->chunk).state == CHUNK_STOP))\n          goto LAB_0003a483;\n          pcVar17 = "transfer closed with outstanding read data remaining";\n        }\n        else {\n          uVar26 = *(uint *)((int)&(data->req).bytecount + 4);\n          uVar11 = (uint)(data->req).bytecount;\n          if (((uVar26 == uVar15 && uVar14 == uVar11) ||\n              (pcVar4 = &(data->state).crlf_conversions,\n              uVar26 == uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +\n                        (uint)CARRY4(uVar14,(uint)*pcVar4) && uVar11 == uVar14 + (int)*pcVar4)) ||\n             ((data->req).newurl != (char *)0x0)) goto LAB_0003a470;\n          iVar24 = uVar14 - uVar11;\n          pcVar17 = "transfer closed with %lld bytes remaining to read";\n        }\n        CVar12 = CURLE_PARTIAL_FILE;\n        Curl_failf(data,pcVar17,iVar24);\n        goto LAB_00039d70;\n      }" if (parenthesized_expression "((data->set).opt_no_body == false)" ( (binary_expression "(data->set).opt_no_body == false" (field_expression "(data->set).opt_no_body" (parenthesized_expression "(data->set)" ( (field_expression "data->set" identifier -> field_identifier) )) . field_identifier) == false) )) (compound_statement "{\n        uVar14 = (uint)(data->req).size;\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        if ((uVar15 & uVar14) == 0xffffffff) {\nLAB_0003a470:\n          if (((data->req).chunk == false) || ((conn->chunk).state == CHUNK_STOP))\n          goto LAB_0003a483;\n          pcVar17 = "transfer closed with outstanding read data remaining";\n        }\n        else {\n          uVar26 = *(uint *)((int)&(data->req).bytecount + 4);\n          uVar11 = (uint)(data->req).bytecount;\n          if (((uVar26 == uVar15 && uVar14 == uVar11) ||\n              (pcVar4 = &(data->state).crlf_conversions,\n              uVar26 == uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +\n                        (uint)CARRY4(uVar14,(uint)*pcVar4) && uVar11 == uVar14 + (int)*pcVar4)) ||\n             ((data->req).newurl != (char *)0x0)) goto LAB_0003a470;\n          iVar24 = uVar14 - uVar11;\n          pcVar17 = "transfer closed with %lld bytes remaining to read";\n        }\n        CVar12 = CURLE_PARTIAL_FILE;\n        Curl_failf(data,pcVar17,iVar24);\n        goto LAB_00039d70;\n      }" { (expression_statement "uVar14 = (uint)(data->req).size;" (assignment_expression "uVar14 = (uint)(data->req).size" identifier = (field_expression "(uint)(data->req).size" (call_expression "(uint)(data->req)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "uVar15 = *(uint *)((int)&(data->req).size + 4);" (assignment_expression "uVar15 = *(uint *)((int)&(data->req).size + 4)" identifier = (pointer_expression "*(uint *)((int)&(data->req).size + 4)" * (cast_expression "(uint *)((int)&(data->req).size + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).size + 4)" ( (binary_expression "(int)&(data->req).size + 4" (cast_expression "(int)&(data->req).size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).size" & (field_expression "(data->req).size" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (if_statement "if ((uVar15 & uVar14) == 0xffffffff) {\nLAB_0003a470:\n          if (((data->req).chunk == false) || ((conn->chunk).state == CHUNK_STOP))\n          goto LAB_0003a483;\n          pcVar17 = "transfer closed with outstanding read data remaining";\n        }\n        else {\n          uVar26 = *(uint *)((int)&(data->req).bytecount + 4);\n          uVar11 = (uint)(data->req).bytecount;\n          if (((uVar26 == uVar15 && uVar14 == uVar11) ||\n              (pcVar4 = &(data->state).crlf_conversions,\n              uVar26 == uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +\n                        (uint)CARRY4(uVar14,(uint)*pcVar4) && uVar11 == uVar14 + (int)*pcVar4)) ||\n             ((data->req).newurl != (char *)0x0)) goto LAB_0003a470;\n          iVar24 = uVar14 - uVar11;\n          pcVar17 = "transfer closed with %lld bytes remaining to read";\n        }" if (parenthesized_expression "((uVar15 & uVar14) == 0xffffffff)" ( (binary_expression "(uVar15 & uVar14) == 0xffffffff" (parenthesized_expression "(uVar15 & uVar14)" ( (binary_expression "uVar15 & uVar14" identifier & identifier) )) == number_literal) )) (compound_statement "{\nLAB_0003a470:\n          if (((data->req).chunk == false) || ((conn->chunk).state == CHUNK_STOP))\n          goto LAB_0003a483;\n          pcVar17 = "transfer closed with outstanding read data remaining";\n        }" { (labeled_statement "LAB_0003a470:\n          if (((data->req).chunk == false) || ((conn->chunk).state == CHUNK_STOP))\n          goto LAB_0003a483;" statement_identifier : (if_statement "if (((data->req).chunk == false) || ((conn->chunk).state == CHUNK_STOP))\n          goto LAB_0003a483;" if (parenthesized_expression "(((data->req).chunk == false) || ((conn->chunk).state == CHUNK_STOP))" ( (binary_expression "((data->req).chunk == false) || ((conn->chunk).state == CHUNK_STOP)" (parenthesized_expression "((data->req).chunk == false)" ( (binary_expression "(data->req).chunk == false" (field_expression "(data->req).chunk" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) == false) )) || (parenthesized_expression "((conn->chunk).state == CHUNK_STOP)" ( (binary_expression "(conn->chunk).state == CHUNK_STOP" (field_expression "(conn->chunk).state" (parenthesized_expression "(conn->chunk)" ( (field_expression "conn->chunk" identifier -> field_identifier) )) . field_identifier) == identifier) ))) )) (goto_statement "goto LAB_0003a483;" goto statement_identifier ;))) (expression_statement "pcVar17 = "transfer closed with outstanding read data remaining";" (assignment_expression "pcVar17 = "transfer closed with outstanding read data remaining"" identifier = (string_literal ""transfer closed with outstanding read data remaining"" " string_content ")) ;) }) (else_clause "else {\n          uVar26 = *(uint *)((int)&(data->req).bytecount + 4);\n          uVar11 = (uint)(data->req).bytecount;\n          if (((uVar26 == uVar15 && uVar14 == uVar11) ||\n              (pcVar4 = &(data->state).crlf_conversions,\n              uVar26 == uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +\n                        (uint)CARRY4(uVar14,(uint)*pcVar4) && uVar11 == uVar14 + (int)*pcVar4)) ||\n             ((data->req).newurl != (char *)0x0)) goto LAB_0003a470;\n          iVar24 = uVar14 - uVar11;\n          pcVar17 = "transfer closed with %lld bytes remaining to read";\n        }" else (compound_statement "{\n          uVar26 = *(uint *)((int)&(data->req).bytecount + 4);\n          uVar11 = (uint)(data->req).bytecount;\n          if (((uVar26 == uVar15 && uVar14 == uVar11) ||\n              (pcVar4 = &(data->state).crlf_conversions,\n              uVar26 == uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +\n                        (uint)CARRY4(uVar14,(uint)*pcVar4) && uVar11 == uVar14 + (int)*pcVar4)) ||\n             ((data->req).newurl != (char *)0x0)) goto LAB_0003a470;\n          iVar24 = uVar14 - uVar11;\n          pcVar17 = "transfer closed with %lld bytes remaining to read";\n        }" { (expression_statement "uVar26 = *(uint *)((int)&(data->req).bytecount + 4);" (assignment_expression "uVar26 = *(uint *)((int)&(data->req).bytecount + 4)" identifier = (pointer_expression "*(uint *)((int)&(data->req).bytecount + 4)" * (cast_expression "(uint *)((int)&(data->req).bytecount + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).bytecount + 4)" ( (binary_expression "(int)&(data->req).bytecount + 4" (cast_expression "(int)&(data->req).bytecount" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).bytecount" & (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar11 = (uint)(data->req).bytecount;" (assignment_expression "uVar11 = (uint)(data->req).bytecount" identifier = (field_expression "(uint)(data->req).bytecount" (call_expression "(uint)(data->req)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) ))) . field_identifier)) ;) (if_statement "if (((uVar26 == uVar15 && uVar14 == uVar11) ||\n              (pcVar4 = &(data->state).crlf_conversions,\n              uVar26 == uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +\n                        (uint)CARRY4(uVar14,(uint)*pcVar4) && uVar11 == uVar14 + (int)*pcVar4)) ||\n             ((data->req).newurl != (char *)0x0)) goto LAB_0003a470;" if (parenthesized_expression "(((uVar26 == uVar15 && uVar14 == uVar11) ||\n              (pcVar4 = &(data->state).crlf_conversions,\n              uVar26 == uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +\n                        (uint)CARRY4(uVar14,(uint)*pcVar4) && uVar11 == uVar14 + (int)*pcVar4)) ||\n             ((data->req).newurl != (char *)0x0))" ( (binary_expression "((uVar26 == uVar15 && uVar14 == uVar11) ||\n              (pcVar4 = &(data->state).crlf_conversions,\n              uVar26 == uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +\n                        (uint)CARRY4(uVar14,(uint)*pcVar4) && uVar11 == uVar14 + (int)*pcVar4)) ||\n             ((data->req).newurl != (char *)0x0)" (parenthesized_expression "((uVar26 == uVar15 && uVar14 == uVar11) ||\n              (pcVar4 = &(data->state).crlf_conversions,\n              uVar26 == uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +\n                        (uint)CARRY4(uVar14,(uint)*pcVar4) && uVar11 == uVar14 + (int)*pcVar4))" ( (binary_expression "(uVar26 == uVar15 && uVar14 == uVar11) ||\n              (pcVar4 = &(data->state).crlf_conversions,\n              uVar26 == uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +\n                        (uint)CARRY4(uVar14,(uint)*pcVar4) && uVar11 == uVar14 + (int)*pcVar4)" (parenthesized_expression "(uVar26 == uVar15 && uVar14 == uVar11)" ( (binary_expression "uVar26 == uVar15 && uVar14 == uVar11" (binary_expression "uVar26 == uVar15" identifier == identifier) && (binary_expression "uVar14 == uVar11" identifier == identifier)) )) || (parenthesized_expression "(pcVar4 = &(data->state).crlf_conversions,\n              uVar26 == uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +\n                        (uint)CARRY4(uVar14,(uint)*pcVar4) && uVar11 == uVar14 + (int)*pcVar4)" ( (comma_expression "pcVar4 = &(data->state).crlf_conversions,\n              uVar26 == uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +\n                        (uint)CARRY4(uVar14,(uint)*pcVar4) && uVar11 == uVar14 + (int)*pcVar4" (assignment_expression "pcVar4 = &(data->state).crlf_conversions" identifier = (pointer_expression "&(data->state).crlf_conversions" & (field_expression "(data->state).crlf_conversions" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier))) , (binary_expression "uVar26 == uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +\n                        (uint)CARRY4(uVar14,(uint)*pcVar4) && uVar11 == uVar14 + (int)*pcVar4" (binary_expression "uVar26 == uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +\n                        (uint)CARRY4(uVar14,(uint)*pcVar4)" identifier == (binary_expression "uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4) +\n                        (uint)CARRY4(uVar14,(uint)*pcVar4)" (binary_expression "uVar15 + *(int *)((int)&(data->state).crlf_conversions + 4)" identifier + (pointer_expression "*(int *)((int)&(data->state).crlf_conversions + 4)" * (cast_expression "(int *)((int)&(data->state).crlf_conversions + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->state).crlf_conversions + 4)" ( (binary_expression "(int)&(data->state).crlf_conversions + 4" (cast_expression "(int)&(data->state).crlf_conversions" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->state).crlf_conversions" & (field_expression "(data->state).crlf_conversions" (parenthesized_expression "(data->state)" ( (field_expression "data->state" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) + (cast_expression "(uint)CARRY4(uVar14,(uint)*pcVar4)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar14,(uint)*pcVar4)" identifier (argument_list "(uVar14,(uint)*pcVar4)" ( identifier , (binary_expression "(uint)*pcVar4" (parenthesized_expression "(uint)" ( identifier )) * identifier) )))))) && (binary_expression "uVar11 == uVar14 + (int)*pcVar4" identifier == (binary_expression "uVar14 + (int)*pcVar4" identifier + (cast_expression "(int)*pcVar4" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar4" * identifier)))))) ))) )) || (parenthesized_expression "((data->req).newurl != (char *)0x0)" ( (binary_expression "(data->req).newurl != (char *)0x0" (field_expression "(data->req).newurl" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (goto_statement "goto LAB_0003a470;" goto statement_identifier ;)) (expression_statement "iVar24 = uVar14 - uVar11;" (assignment_expression "iVar24 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "pcVar17 = "transfer closed with %lld bytes remaining to read";" (assignment_expression "pcVar17 = "transfer closed with %lld bytes remaining to read"" identifier = (string_literal ""transfer closed with %lld bytes remaining to read"" " string_content ")) ;) }))) (expression_statement "CVar12 = CURLE_PARTIAL_FILE;" (assignment_expression "CVar12 = CURLE_PARTIAL_FILE" identifier = identifier) ;) (expression_statement "Curl_failf(data,pcVar17,iVar24);" (call_expression "Curl_failf(data,pcVar17,iVar24)" identifier (argument_list "(data,pcVar17,iVar24)" ( identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (labeled_statement "LAB_0003a483:\n      iVar24 = Curl_pgrsUpdate(conn);" statement_identifier : (expression_statement "iVar24 = Curl_pgrsUpdate(conn);" (assignment_expression "iVar24 = Curl_pgrsUpdate(conn)" identifier = (call_expression "Curl_pgrsUpdate(conn)" identifier (argument_list "(conn)" ( identifier )))) ;)) (if_statement "if (iVar24 != 0) goto LAB_00039f19;" if (parenthesized_expression "(iVar24 != 0)" ( (binary_expression "iVar24 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039f19;" goto statement_identifier ;)) }) (else_clause "else {\n      tVar16 = Curl_timeleft(data,&(data->req).now,false);\n      if (tVar16 < 0) {\n        uVar14 = (uint)(data->req).size;\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        cVar7 = (data->req).bytecount;\n        uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4);\n        if ((uVar14 & uVar15) == 0xffffffff) {\n          pcVar3 = &(data->progress).t_startsingle;\n          uVar15 = pcVar3->tv_sec;\n          uVar14 = (data->req).now.tv_usec;\n          tVar16 = Curl_timediff((data->req).now,*pcVar3);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld bytes received";\n        }\n        else {\n          tVar16 = Curl_timediff((data->req).now,(data->progress).t_startsingle);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld out of %lld bytes received"\n          ;\n        }\n        CVar12 = CURLE_OPERATION_TIMEDOUT;\n        Curl_failf(data,pcVar17,tVar16,(int)cVar7,uVar5,uVar14,uVar15);\n        goto LAB_00039d70;\n      }\n    }" else (compound_statement "{\n      tVar16 = Curl_timeleft(data,&(data->req).now,false);\n      if (tVar16 < 0) {\n        uVar14 = (uint)(data->req).size;\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        cVar7 = (data->req).bytecount;\n        uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4);\n        if ((uVar14 & uVar15) == 0xffffffff) {\n          pcVar3 = &(data->progress).t_startsingle;\n          uVar15 = pcVar3->tv_sec;\n          uVar14 = (data->req).now.tv_usec;\n          tVar16 = Curl_timediff((data->req).now,*pcVar3);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld bytes received";\n        }\n        else {\n          tVar16 = Curl_timediff((data->req).now,(data->progress).t_startsingle);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld out of %lld bytes received"\n          ;\n        }\n        CVar12 = CURLE_OPERATION_TIMEDOUT;\n        Curl_failf(data,pcVar17,tVar16,(int)cVar7,uVar5,uVar14,uVar15);\n        goto LAB_00039d70;\n      }\n    }" { (expression_statement "tVar16 = Curl_timeleft(data,&(data->req).now,false);" (assignment_expression "tVar16 = Curl_timeleft(data,&(data->req).now,false)" identifier = (call_expression "Curl_timeleft(data,&(data->req).now,false)" identifier (argument_list "(data,&(data->req).now,false)" ( identifier , (pointer_expression "&(data->req).now" & (field_expression "(data->req).now" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) , false )))) ;) (if_statement "if (tVar16 < 0) {\n        uVar14 = (uint)(data->req).size;\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        cVar7 = (data->req).bytecount;\n        uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4);\n        if ((uVar14 & uVar15) == 0xffffffff) {\n          pcVar3 = &(data->progress).t_startsingle;\n          uVar15 = pcVar3->tv_sec;\n          uVar14 = (data->req).now.tv_usec;\n          tVar16 = Curl_timediff((data->req).now,*pcVar3);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld bytes received";\n        }\n        else {\n          tVar16 = Curl_timediff((data->req).now,(data->progress).t_startsingle);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld out of %lld bytes received"\n          ;\n        }\n        CVar12 = CURLE_OPERATION_TIMEDOUT;\n        Curl_failf(data,pcVar17,tVar16,(int)cVar7,uVar5,uVar14,uVar15);\n        goto LAB_00039d70;\n      }" if (parenthesized_expression "(tVar16 < 0)" ( (binary_expression "tVar16 < 0" identifier < number_literal) )) (compound_statement "{\n        uVar14 = (uint)(data->req).size;\n        uVar15 = *(uint *)((int)&(data->req).size + 4);\n        cVar7 = (data->req).bytecount;\n        uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4);\n        if ((uVar14 & uVar15) == 0xffffffff) {\n          pcVar3 = &(data->progress).t_startsingle;\n          uVar15 = pcVar3->tv_sec;\n          uVar14 = (data->req).now.tv_usec;\n          tVar16 = Curl_timediff((data->req).now,*pcVar3);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld bytes received";\n        }\n        else {\n          tVar16 = Curl_timediff((data->req).now,(data->progress).t_startsingle);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld out of %lld bytes received"\n          ;\n        }\n        CVar12 = CURLE_OPERATION_TIMEDOUT;\n        Curl_failf(data,pcVar17,tVar16,(int)cVar7,uVar5,uVar14,uVar15);\n        goto LAB_00039d70;\n      }" { (expression_statement "uVar14 = (uint)(data->req).size;" (assignment_expression "uVar14 = (uint)(data->req).size" identifier = (field_expression "(uint)(data->req).size" (call_expression "(uint)(data->req)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "uVar15 = *(uint *)((int)&(data->req).size + 4);" (assignment_expression "uVar15 = *(uint *)((int)&(data->req).size + 4)" identifier = (pointer_expression "*(uint *)((int)&(data->req).size + 4)" * (cast_expression "(uint *)((int)&(data->req).size + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).size + 4)" ( (binary_expression "(int)&(data->req).size + 4" (cast_expression "(int)&(data->req).size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).size" & (field_expression "(data->req).size" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "cVar7 = (data->req).bytecount;" (assignment_expression "cVar7 = (data->req).bytecount" identifier = (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4);" (assignment_expression "uVar5 = *(undefined4 *)((int)&(data->req).bytecount + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&(data->req).bytecount + 4)" * (cast_expression "(undefined4 *)((int)&(data->req).bytecount + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(data->req).bytecount + 4)" ( (binary_expression "(int)&(data->req).bytecount + 4" (cast_expression "(int)&(data->req).bytecount" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(data->req).bytecount" & (field_expression "(data->req).bytecount" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (if_statement "if ((uVar14 & uVar15) == 0xffffffff) {\n          pcVar3 = &(data->progress).t_startsingle;\n          uVar15 = pcVar3->tv_sec;\n          uVar14 = (data->req).now.tv_usec;\n          tVar16 = Curl_timediff((data->req).now,*pcVar3);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld bytes received";\n        }\n        else {\n          tVar16 = Curl_timediff((data->req).now,(data->progress).t_startsingle);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld out of %lld bytes received"\n          ;\n        }" if (parenthesized_expression "((uVar14 & uVar15) == 0xffffffff)" ( (binary_expression "(uVar14 & uVar15) == 0xffffffff" (parenthesized_expression "(uVar14 & uVar15)" ( (binary_expression "uVar14 & uVar15" identifier & identifier) )) == number_literal) )) (compound_statement "{\n          pcVar3 = &(data->progress).t_startsingle;\n          uVar15 = pcVar3->tv_sec;\n          uVar14 = (data->req).now.tv_usec;\n          tVar16 = Curl_timediff((data->req).now,*pcVar3);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld bytes received";\n        }" { (expression_statement "pcVar3 = &(data->progress).t_startsingle;" (assignment_expression "pcVar3 = &(data->progress).t_startsingle" identifier = (pointer_expression "&(data->progress).t_startsingle" & (field_expression "(data->progress).t_startsingle" (parenthesized_expression "(data->progress)" ( (field_expression "data->progress" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "uVar15 = pcVar3->tv_sec;" (assignment_expression "uVar15 = pcVar3->tv_sec" identifier = (field_expression "pcVar3->tv_sec" identifier -> field_identifier)) ;) (expression_statement "uVar14 = (data->req).now.tv_usec;" (assignment_expression "uVar14 = (data->req).now.tv_usec" identifier = (field_expression "(data->req).now.tv_usec" (field_expression "(data->req).now" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "tVar16 = Curl_timediff((data->req).now,*pcVar3);" (assignment_expression "tVar16 = Curl_timediff((data->req).now,*pcVar3)" identifier = (call_expression "Curl_timediff((data->req).now,*pcVar3)" identifier (argument_list "((data->req).now,*pcVar3)" ( (field_expression "(data->req).now" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) , (pointer_expression "*pcVar3" * identifier) )))) ;) (expression_statement "pcVar17 = "Operation timed out after %d milliseconds with %lld bytes received";" (assignment_expression "pcVar17 = "Operation timed out after %d milliseconds with %lld bytes received"" identifier = (string_literal ""Operation timed out after %d milliseconds with %lld bytes received"" " string_content ")) ;) }) (else_clause "else {\n          tVar16 = Curl_timediff((data->req).now,(data->progress).t_startsingle);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld out of %lld bytes received"\n          ;\n        }" else (compound_statement "{\n          tVar16 = Curl_timediff((data->req).now,(data->progress).t_startsingle);\n          pcVar17 = "Operation timed out after %d milliseconds with %lld out of %lld bytes received"\n          ;\n        }" { (expression_statement "tVar16 = Curl_timediff((data->req).now,(data->progress).t_startsingle);" (assignment_expression "tVar16 = Curl_timediff((data->req).now,(data->progress).t_startsingle)" identifier = (call_expression "Curl_timediff((data->req).now,(data->progress).t_startsingle)" identifier (argument_list "((data->req).now,(data->progress).t_startsingle)" ( (field_expression "(data->req).now" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) , (field_expression "(data->progress).t_startsingle" (parenthesized_expression "(data->progress)" ( (field_expression "data->progress" identifier -> field_identifier) )) . field_identifier) )))) ;) (expression_statement "pcVar17 = "Operation timed out after %d milliseconds with %lld out of %lld bytes received"\n          ;" (assignment_expression "pcVar17 = "Operation timed out after %d milliseconds with %lld out of %lld bytes received"" identifier = (string_literal ""Operation timed out after %d milliseconds with %lld out of %lld bytes received"" " string_content ")) ;) }))) (expression_statement "CVar12 = CURLE_OPERATION_TIMEDOUT;" (assignment_expression "CVar12 = CURLE_OPERATION_TIMEDOUT" identifier = identifier) ;) (expression_statement "Curl_failf(data,pcVar17,tVar16,(int)cVar7,uVar5,uVar14,uVar15);" (call_expression "Curl_failf(data,pcVar17,tVar16,(int)cVar7,uVar5,uVar14,uVar15)" identifier (argument_list "(data,pcVar17,tVar16,(int)cVar7,uVar5,uVar14,uVar15)" ( identifier , identifier , identifier , (cast_expression "(int)cVar7" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) }))) (expression_statement "*done = ((data->req).keepon & 0x33) == 0;" (assignment_expression "*done = ((data->req).keepon & 0x33) == 0" (pointer_expression "*done" * identifier) = (binary_expression "((data->req).keepon & 0x33) == 0" (parenthesized_expression "((data->req).keepon & 0x33)" ( (binary_expression "(data->req).keepon & 0x33" (field_expression "(data->req).keepon" (parenthesized_expression "(data->req)" ( (field_expression "data->req" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal)) ;) }) (else_clause "else {\nLAB_00039f19:\n    CVar12 = CURLE_ABORTED_BY_CALLBACK;\n  }" else (compound_statement "{\nLAB_00039f19:\n    CVar12 = CURLE_ABORTED_BY_CALLBACK;\n  }" { (labeled_statement "LAB_00039f19:\n    CVar12 = CURLE_ABORTED_BY_CALLBACK;" statement_identifier : (expression_statement "CVar12 = CURLE_ABORTED_BY_CALLBACK;" (assignment_expression "CVar12 = CURLE_ABORTED_BY_CALLBACK" identifier = identifier) ;)) }))) (labeled_statement "LAB_00039d70:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return CVar12;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return CVar12;\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    return CVar12;\n  }" { (return_statement "return CVar12;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "int FUN_00039860(int param_1,undefined1 *param_2,undefined1 *param_3)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  char *pcVar6;\n  char cVar7;\n  uint uVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  uint uVar14;\n  int unaff_EBX;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined1 *puVar17;\n  int in_GS_OFFSET;\n  bool bVar18;\n  int *unaff_retaddr;\n  int aiStackY_a4 [5];\n  undefined4 uStack_84;\n  undefined1 auStack_80 [8];\n  uint local_78;\n  uint local_70 [10];\n  undefined1 *local_48;\n  undefined4 local_44;\n  undefined1 *local_3c [4];\n  undefined1 local_2a;\n  undefined4 local_28 [5];\n  undefined4 uStack_14;\n  \n  iVar13 = -1;\n  uStack_14 = 0x3986e;\n  entry();\n  local_48 = param_2;\n  local_3c[0] = param_3;\n  local_28[1] = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  local_70[5] = param_1 + 0x94;\n  local_78 = unaff_retaddr[0x158];\n  unaff_retaddr[0x158] = 0;\n  if ((*(uint *)(param_1 + 300) & 0x15) == 1) {\n    iVar13 = unaff_retaddr[0xa5];\n  }\n  iVar10 = -1;\n  if ((*(uint *)(param_1 + 300) & 0x2a) == 2) {\n    iVar10 = unaff_retaddr[0xa6];\n  }\n  if (*(int *)(*unaff_retaddr + 0xed4) == 0) {\n    if (local_78 == 0) {\n      uStack_84 = 0;\n      local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);\n    }\n  }\n  else {\n    local_78 = local_78 | 1;\n  }\n  puVar16 = auStack_80;\n  if (local_78 == 4) {\n    iVar13 = 0x37;\n    FUN_00027240(param_1,unaff_EBX + 0x47047);\n    goto LAB_00039d70;\n  }\n  local_70[4] = *(uint *)(param_1 + 300) & 1;\n  if ((local_70[4] == 0) ||\n     (((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0')))) {\n    if (((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }\n      iVar13 = *(int *)(param_1 + 0x13c);\n      if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }\nLAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n      *(undefined4 *)(puVar16 + -0x14) = 0x39c18;\n      FUN_0001ab40();\n      uVar9 = *(undefined4 *)(puVar16 + 0x48);\n      iVar13 = *(int *)(puVar16 + 0x20);\n      puVar15 = puVar16 + -4;\n      *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n      *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n      goto LAB_00039ecb;\n    }\n    FUN_0001ab40(local_3c + 1);\n    *(undefined1 **)(param_1 + 0xcc) = local_3c[0];\n    *(undefined1 **)(param_1 + 0xd0) = local_3c[1];\n    puVar4 = &uStack_84;\nLAB_00039c5c:\n    puVar15 = (undefined1 *)puVar4;\n    if (*(int *)(param_1 + 0x110) == 1) {\n      iVar13 = *(int *)(puVar15 + 0x24);\n      *(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);\n      *(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);\n      *(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);\n      *(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);\n      *(undefined4 *)(puVar15 + -0x14) = 0x3a775;\n      iVar13 = FUN_0001abe0();\n      if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }\n    }\nLAB_00039c69:\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39c72;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }\n  else {\n    local_2a = 0;\n    local_70[0] = 0;\n    *local_48 = 0;\n    local_70[3] = 100;\n    *local_3c[0] = 0;\n    local_44 = 0;\n    puVar16 = auStack_80;\n    do {\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    } while (*(int *)(puVar16 + 0x1c) != -1);\n    uVar14 = *(uint *)(param_1 + 300);\nLAB_00039e5f:\n    puVar17 = *(undefined1 **)(puVar16 + 0x44);\n    unaff_retaddr[0x158] = 1;\n    *puVar17 = 1;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }\n    puVar17 = puVar16 + 0x48;\nLAB_00039ea1:\n    *(undefined1 **)(puVar16 + -0x10) = puVar17;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39eaa;\n    FUN_0001ab40();\n    uVar9 = *(undefined4 *)(puVar16 + 0x48);\n    iVar13 = *(int *)(puVar16 + 0x20);\n    puVar15 = puVar16 + -4;\n    *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n    *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n    puVar4 = (undefined4 *)(puVar16 + -4);\n    if (*(int *)(puVar16 + 0x1c) == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    puVar4 = *(undefined4 **)(param_1 + 0x9c);\n    if (puVar4 != (undefined4 *)0x0) {\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }\n    puVar4 = *(undefined4 **)(param_1 + 0xa8);\n    if (puVar4 == (undefined4 *)0x0) goto LAB_00039c69;\n    uVar9 = *(undefined4 *)(param_1 + 0xb8);\n    *puVar4 = *(undefined4 *)(param_1 + 0xb4);\n    puVar4[1] = uVar9;\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39f0e;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }\n  if (iVar13 == 0) {\n    *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n    *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n    *(int *)(puVar16 + -0x10) = param_1;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39c90;\n    iVar13 = FUN_00033f20();\n    if (iVar13 != 0) goto LAB_00039d70;\n    if (*(int *)(param_1 + 300) == 0) {\n      if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a48c;\n      iVar10 = FUN_0001cc10();\n      if (iVar10 != 0) goto LAB_00039f19;\n    }\n    else {\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }\n    *(bool *)*(undefined4 *)(puVar16 + 0x38) = (*(byte *)(param_1 + 300) & 0x33) == 0;\n  }\n  else {\nLAB_00039f19:\n    iVar13 = 0x2a;\n  }\nLAB_00039d70:\n  if (*(int *)(puVar16 + 0x5c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar13;\n  }\n                    \n  *(undefined4 *)(puVar16 + -4) = 0x3ad7f;\n  FUN_0007c1a0();\n}\n\n" (function_definition "int FUN_00039860(int param_1,undefined1 *param_2,undefined1 *param_3)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  char *pcVar6;\n  char cVar7;\n  uint uVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  uint uVar14;\n  int unaff_EBX;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined1 *puVar17;\n  int in_GS_OFFSET;\n  bool bVar18;\n  int *unaff_retaddr;\n  int aiStackY_a4 [5];\n  undefined4 uStack_84;\n  undefined1 auStack_80 [8];\n  uint local_78;\n  uint local_70 [10];\n  undefined1 *local_48;\n  undefined4 local_44;\n  undefined1 *local_3c [4];\n  undefined1 local_2a;\n  undefined4 local_28 [5];\n  undefined4 uStack_14;\n  \n  iVar13 = -1;\n  uStack_14 = 0x3986e;\n  entry();\n  local_48 = param_2;\n  local_3c[0] = param_3;\n  local_28[1] = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  local_70[5] = param_1 + 0x94;\n  local_78 = unaff_retaddr[0x158];\n  unaff_retaddr[0x158] = 0;\n  if ((*(uint *)(param_1 + 300) & 0x15) == 1) {\n    iVar13 = unaff_retaddr[0xa5];\n  }\n  iVar10 = -1;\n  if ((*(uint *)(param_1 + 300) & 0x2a) == 2) {\n    iVar10 = unaff_retaddr[0xa6];\n  }\n  if (*(int *)(*unaff_retaddr + 0xed4) == 0) {\n    if (local_78 == 0) {\n      uStack_84 = 0;\n      local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);\n    }\n  }\n  else {\n    local_78 = local_78 | 1;\n  }\n  puVar16 = auStack_80;\n  if (local_78 == 4) {\n    iVar13 = 0x37;\n    FUN_00027240(param_1,unaff_EBX + 0x47047);\n    goto LAB_00039d70;\n  }\n  local_70[4] = *(uint *)(param_1 + 300) & 1;\n  if ((local_70[4] == 0) ||\n     (((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0')))) {\n    if (((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }\n      iVar13 = *(int *)(param_1 + 0x13c);\n      if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }\nLAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n      *(undefined4 *)(puVar16 + -0x14) = 0x39c18;\n      FUN_0001ab40();\n      uVar9 = *(undefined4 *)(puVar16 + 0x48);\n      iVar13 = *(int *)(puVar16 + 0x20);\n      puVar15 = puVar16 + -4;\n      *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n      *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n      goto LAB_00039ecb;\n    }\n    FUN_0001ab40(local_3c + 1);\n    *(undefined1 **)(param_1 + 0xcc) = local_3c[0];\n    *(undefined1 **)(param_1 + 0xd0) = local_3c[1];\n    puVar4 = &uStack_84;\nLAB_00039c5c:\n    puVar15 = (undefined1 *)puVar4;\n    if (*(int *)(param_1 + 0x110) == 1) {\n      iVar13 = *(int *)(puVar15 + 0x24);\n      *(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);\n      *(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);\n      *(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);\n      *(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);\n      *(undefined4 *)(puVar15 + -0x14) = 0x3a775;\n      iVar13 = FUN_0001abe0();\n      if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }\n    }\nLAB_00039c69:\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39c72;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }\n  else {\n    local_2a = 0;\n    local_70[0] = 0;\n    *local_48 = 0;\n    local_70[3] = 100;\n    *local_3c[0] = 0;\n    local_44 = 0;\n    puVar16 = auStack_80;\n    do {\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    } while (*(int *)(puVar16 + 0x1c) != -1);\n    uVar14 = *(uint *)(param_1 + 300);\nLAB_00039e5f:\n    puVar17 = *(undefined1 **)(puVar16 + 0x44);\n    unaff_retaddr[0x158] = 1;\n    *puVar17 = 1;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }\n    puVar17 = puVar16 + 0x48;\nLAB_00039ea1:\n    *(undefined1 **)(puVar16 + -0x10) = puVar17;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39eaa;\n    FUN_0001ab40();\n    uVar9 = *(undefined4 *)(puVar16 + 0x48);\n    iVar13 = *(int *)(puVar16 + 0x20);\n    puVar15 = puVar16 + -4;\n    *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n    *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n    puVar4 = (undefined4 *)(puVar16 + -4);\n    if (*(int *)(puVar16 + 0x1c) == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    puVar4 = *(undefined4 **)(param_1 + 0x9c);\n    if (puVar4 != (undefined4 *)0x0) {\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }\n    puVar4 = *(undefined4 **)(param_1 + 0xa8);\n    if (puVar4 == (undefined4 *)0x0) goto LAB_00039c69;\n    uVar9 = *(undefined4 *)(param_1 + 0xb8);\n    *puVar4 = *(undefined4 *)(param_1 + 0xb4);\n    puVar4[1] = uVar9;\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39f0e;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }\n  if (iVar13 == 0) {\n    *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n    *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n    *(int *)(puVar16 + -0x10) = param_1;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39c90;\n    iVar13 = FUN_00033f20();\n    if (iVar13 != 0) goto LAB_00039d70;\n    if (*(int *)(param_1 + 300) == 0) {\n      if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a48c;\n      iVar10 = FUN_0001cc10();\n      if (iVar10 != 0) goto LAB_00039f19;\n    }\n    else {\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }\n    *(bool *)*(undefined4 *)(puVar16 + 0x38) = (*(byte *)(param_1 + 300) & 0x33) == 0;\n  }\n  else {\nLAB_00039f19:\n    iVar13 = 0x2a;\n  }\nLAB_00039d70:\n  if (*(int *)(puVar16 + 0x5c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar13;\n  }\n                    \n  *(undefined4 *)(puVar16 + -4) = 0x3ad7f;\n  FUN_0007c1a0();\n}" primitive_type (function_declarator "FUN_00039860(int param_1,undefined1 *param_2,undefined1 *param_3)" identifier (parameter_list "(int param_1,undefined1 *param_2,undefined1 *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined1 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined1 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  uint uVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  char *pcVar6;\n  char cVar7;\n  uint uVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  uint uVar14;\n  int unaff_EBX;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined1 *puVar17;\n  int in_GS_OFFSET;\n  bool bVar18;\n  int *unaff_retaddr;\n  int aiStackY_a4 [5];\n  undefined4 uStack_84;\n  undefined1 auStack_80 [8];\n  uint local_78;\n  uint local_70 [10];\n  undefined1 *local_48;\n  undefined4 local_44;\n  undefined1 *local_3c [4];\n  undefined1 local_2a;\n  undefined4 local_28 [5];\n  undefined4 uStack_14;\n  \n  iVar13 = -1;\n  uStack_14 = 0x3986e;\n  entry();\n  local_48 = param_2;\n  local_3c[0] = param_3;\n  local_28[1] = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  local_70[5] = param_1 + 0x94;\n  local_78 = unaff_retaddr[0x158];\n  unaff_retaddr[0x158] = 0;\n  if ((*(uint *)(param_1 + 300) & 0x15) == 1) {\n    iVar13 = unaff_retaddr[0xa5];\n  }\n  iVar10 = -1;\n  if ((*(uint *)(param_1 + 300) & 0x2a) == 2) {\n    iVar10 = unaff_retaddr[0xa6];\n  }\n  if (*(int *)(*unaff_retaddr + 0xed4) == 0) {\n    if (local_78 == 0) {\n      uStack_84 = 0;\n      local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);\n    }\n  }\n  else {\n    local_78 = local_78 | 1;\n  }\n  puVar16 = auStack_80;\n  if (local_78 == 4) {\n    iVar13 = 0x37;\n    FUN_00027240(param_1,unaff_EBX + 0x47047);\n    goto LAB_00039d70;\n  }\n  local_70[4] = *(uint *)(param_1 + 300) & 1;\n  if ((local_70[4] == 0) ||\n     (((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0')))) {\n    if (((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }\n      iVar13 = *(int *)(param_1 + 0x13c);\n      if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }\nLAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n      *(undefined4 *)(puVar16 + -0x14) = 0x39c18;\n      FUN_0001ab40();\n      uVar9 = *(undefined4 *)(puVar16 + 0x48);\n      iVar13 = *(int *)(puVar16 + 0x20);\n      puVar15 = puVar16 + -4;\n      *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n      *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n      goto LAB_00039ecb;\n    }\n    FUN_0001ab40(local_3c + 1);\n    *(undefined1 **)(param_1 + 0xcc) = local_3c[0];\n    *(undefined1 **)(param_1 + 0xd0) = local_3c[1];\n    puVar4 = &uStack_84;\nLAB_00039c5c:\n    puVar15 = (undefined1 *)puVar4;\n    if (*(int *)(param_1 + 0x110) == 1) {\n      iVar13 = *(int *)(puVar15 + 0x24);\n      *(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);\n      *(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);\n      *(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);\n      *(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);\n      *(undefined4 *)(puVar15 + -0x14) = 0x3a775;\n      iVar13 = FUN_0001abe0();\n      if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }\n    }\nLAB_00039c69:\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39c72;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }\n  else {\n    local_2a = 0;\n    local_70[0] = 0;\n    *local_48 = 0;\n    local_70[3] = 100;\n    *local_3c[0] = 0;\n    local_44 = 0;\n    puVar16 = auStack_80;\n    do {\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    } while (*(int *)(puVar16 + 0x1c) != -1);\n    uVar14 = *(uint *)(param_1 + 300);\nLAB_00039e5f:\n    puVar17 = *(undefined1 **)(puVar16 + 0x44);\n    unaff_retaddr[0x158] = 1;\n    *puVar17 = 1;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }\n    puVar17 = puVar16 + 0x48;\nLAB_00039ea1:\n    *(undefined1 **)(puVar16 + -0x10) = puVar17;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39eaa;\n    FUN_0001ab40();\n    uVar9 = *(undefined4 *)(puVar16 + 0x48);\n    iVar13 = *(int *)(puVar16 + 0x20);\n    puVar15 = puVar16 + -4;\n    *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n    *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n    puVar4 = (undefined4 *)(puVar16 + -4);\n    if (*(int *)(puVar16 + 0x1c) == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    puVar4 = *(undefined4 **)(param_1 + 0x9c);\n    if (puVar4 != (undefined4 *)0x0) {\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }\n    puVar4 = *(undefined4 **)(param_1 + 0xa8);\n    if (puVar4 == (undefined4 *)0x0) goto LAB_00039c69;\n    uVar9 = *(undefined4 *)(param_1 + 0xb8);\n    *puVar4 = *(undefined4 *)(param_1 + 0xb4);\n    puVar4[1] = uVar9;\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39f0e;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }\n  if (iVar13 == 0) {\n    *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n    *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n    *(int *)(puVar16 + -0x10) = param_1;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39c90;\n    iVar13 = FUN_00033f20();\n    if (iVar13 != 0) goto LAB_00039d70;\n    if (*(int *)(param_1 + 300) == 0) {\n      if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a48c;\n      iVar10 = FUN_0001cc10();\n      if (iVar10 != 0) goto LAB_00039f19;\n    }\n    else {\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }\n    *(bool *)*(undefined4 *)(puVar16 + 0x38) = (*(byte *)(param_1 + 300) & 0x33) == 0;\n  }\n  else {\nLAB_00039f19:\n    iVar13 = 0x2a;\n  }\nLAB_00039d70:\n  if (*(int *)(puVar16 + 0x5c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar13;\n  }\n                    \n  *(undefined4 *)(puVar16 + -4) = 0x3ad7f;\n  FUN_0007c1a0();\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int unaff_EBX;" primitive_type identifier ;) (declaration "undefined1 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined1 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "undefined1 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar18;" primitive_type identifier ;) (declaration "int *unaff_retaddr;" primitive_type (pointer_declarator "*unaff_retaddr" * identifier) ;) (declaration "int aiStackY_a4 [5];" primitive_type (array_declarator "aiStackY_a4 [5]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_84;" type_identifier identifier ;) (declaration "undefined1 auStack_80 [8];" type_identifier (array_declarator "auStack_80 [8]" identifier [ number_literal ]) ;) (declaration "uint local_78;" type_identifier identifier ;) (declaration "uint local_70 [10];" type_identifier (array_declarator "local_70 [10]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined1 *local_3c [4];" type_identifier (pointer_declarator "*local_3c [4]" * (array_declarator "local_3c [4]" identifier [ number_literal ])) ;) (declaration "undefined1 local_2a;" type_identifier identifier ;) (declaration "undefined4 local_28 [5];" type_identifier (array_declarator "local_28 [5]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "iVar13 = -1;" (assignment_expression "iVar13 = -1" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x3986e;" (assignment_expression "uStack_14 = 0x3986e" identifier = number_literal) ;) (expression_statement "entry();" (call_expression "entry()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_48 = param_2;" (assignment_expression "local_48 = param_2" identifier = identifier) ;) (expression_statement "local_3c[0] = param_3;" (assignment_expression "local_3c[0] = param_3" (subscript_expression "local_3c[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_28[1] = *(undefined4 *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_28[1] = *(undefined4 *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_28[1]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(in_GS_OFFSET + 0x14)" * (cast_expression "(undefined4 *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_70[5] = param_1 + 0x94;" (assignment_expression "local_70[5] = param_1 + 0x94" (subscript_expression "local_70[5]" identifier [ number_literal ]) = (binary_expression "param_1 + 0x94" identifier + number_literal)) ;) (expression_statement "local_78 = unaff_retaddr[0x158];" (assignment_expression "local_78 = unaff_retaddr[0x158]" identifier = (subscript_expression "unaff_retaddr[0x158]" identifier [ number_literal ])) ;) (expression_statement "unaff_retaddr[0x158] = 0;" (assignment_expression "unaff_retaddr[0x158] = 0" (subscript_expression "unaff_retaddr[0x158]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if ((*(uint *)(param_1 + 300) & 0x15) == 1) {\n    iVar13 = unaff_retaddr[0xa5];\n  }" if (parenthesized_expression "((*(uint *)(param_1 + 300) & 0x15) == 1)" ( (binary_expression "(*(uint *)(param_1 + 300) & 0x15) == 1" (parenthesized_expression "(*(uint *)(param_1 + 300) & 0x15)" ( (binary_expression "*(uint *)(param_1 + 300) & 0x15" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar13 = unaff_retaddr[0xa5];\n  }" { (expression_statement "iVar13 = unaff_retaddr[0xa5];" (assignment_expression "iVar13 = unaff_retaddr[0xa5]" identifier = (subscript_expression "unaff_retaddr[0xa5]" identifier [ number_literal ])) ;) })) (expression_statement "iVar10 = -1;" (assignment_expression "iVar10 = -1" identifier = number_literal) ;) (if_statement "if ((*(uint *)(param_1 + 300) & 0x2a) == 2) {\n    iVar10 = unaff_retaddr[0xa6];\n  }" if (parenthesized_expression "((*(uint *)(param_1 + 300) & 0x2a) == 2)" ( (binary_expression "(*(uint *)(param_1 + 300) & 0x2a) == 2" (parenthesized_expression "(*(uint *)(param_1 + 300) & 0x2a)" ( (binary_expression "*(uint *)(param_1 + 300) & 0x2a" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar10 = unaff_retaddr[0xa6];\n  }" { (expression_statement "iVar10 = unaff_retaddr[0xa6];" (assignment_expression "iVar10 = unaff_retaddr[0xa6]" identifier = (subscript_expression "unaff_retaddr[0xa6]" identifier [ number_literal ])) ;) })) (if_statement "if (*(int *)(*unaff_retaddr + 0xed4) == 0) {\n    if (local_78 == 0) {\n      uStack_84 = 0;\n      local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);\n    }\n  }\n  else {\n    local_78 = local_78 | 1;\n  }" if (parenthesized_expression "(*(int *)(*unaff_retaddr + 0xed4) == 0)" ( (binary_expression "*(int *)(*unaff_retaddr + 0xed4) == 0" (pointer_expression "*(int *)(*unaff_retaddr + 0xed4)" * (cast_expression "(int *)(*unaff_retaddr + 0xed4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*unaff_retaddr + 0xed4)" ( (binary_expression "*unaff_retaddr + 0xed4" (pointer_expression "*unaff_retaddr" * identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n    if (local_78 == 0) {\n      uStack_84 = 0;\n      local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);\n    }\n  }" { (if_statement "if (local_78 == 0) {\n      uStack_84 = 0;\n      local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);\n    }" if (parenthesized_expression "(local_78 == 0)" ( (binary_expression "local_78 == 0" identifier == number_literal) )) (compound_statement "{\n      uStack_84 = 0;\n      local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);\n    }" { (expression_statement "uStack_84 = 0;" (assignment_expression "uStack_84 = 0" identifier = number_literal) ;) (expression_statement "local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);" (assignment_expression "local_78 = FUN_00049010(iVar13,0xffffffff,iVar10)" identifier = (call_expression "FUN_00049010(iVar13,0xffffffff,iVar10)" identifier (argument_list "(iVar13,0xffffffff,iVar10)" ( identifier , number_literal , identifier )))) ;) })) }) (else_clause "else {\n    local_78 = local_78 | 1;\n  }" else (compound_statement "{\n    local_78 = local_78 | 1;\n  }" { (expression_statement "local_78 = local_78 | 1;" (assignment_expression "local_78 = local_78 | 1" identifier = (binary_expression "local_78 | 1" identifier | number_literal)) ;) }))) (expression_statement "puVar16 = auStack_80;" (assignment_expression "puVar16 = auStack_80" identifier = identifier) ;) (if_statement "if (local_78 == 4) {\n    iVar13 = 0x37;\n    FUN_00027240(param_1,unaff_EBX + 0x47047);\n    goto LAB_00039d70;\n  }" if (parenthesized_expression "(local_78 == 4)" ( (binary_expression "local_78 == 4" identifier == number_literal) )) (compound_statement "{\n    iVar13 = 0x37;\n    FUN_00027240(param_1,unaff_EBX + 0x47047);\n    goto LAB_00039d70;\n  }" { (expression_statement "iVar13 = 0x37;" (assignment_expression "iVar13 = 0x37" identifier = number_literal) ;) (expression_statement "FUN_00027240(param_1,unaff_EBX + 0x47047);" (call_expression "FUN_00027240(param_1,unaff_EBX + 0x47047)" identifier (argument_list "(param_1,unaff_EBX + 0x47047)" ( identifier , (binary_expression "unaff_EBX + 0x47047" identifier + number_literal) ))) ;) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (expression_statement "local_70[4] = *(uint *)(param_1 + 300) & 1;" (assignment_expression "local_70[4] = *(uint *)(param_1 + 300) & 1" (subscript_expression "local_70[4]" identifier [ number_literal ]) = (binary_expression "*(uint *)(param_1 + 300) & 1" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if ((local_70[4] == 0) ||\n     (((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0')))) {\n    if (((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }\n      iVar13 = *(int *)(param_1 + 0x13c);\n      if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }\nLAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n      *(undefined4 *)(puVar16 + -0x14) = 0x39c18;\n      FUN_0001ab40();\n      uVar9 = *(undefined4 *)(puVar16 + 0x48);\n      iVar13 = *(int *)(puVar16 + 0x20);\n      puVar15 = puVar16 + -4;\n      *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n      *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n      goto LAB_00039ecb;\n    }\n    FUN_0001ab40(local_3c + 1);\n    *(undefined1 **)(param_1 + 0xcc) = local_3c[0];\n    *(undefined1 **)(param_1 + 0xd0) = local_3c[1];\n    puVar4 = &uStack_84;\nLAB_00039c5c:\n    puVar15 = (undefined1 *)puVar4;\n    if (*(int *)(param_1 + 0x110) == 1) {\n      iVar13 = *(int *)(puVar15 + 0x24);\n      *(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);\n      *(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);\n      *(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);\n      *(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);\n      *(undefined4 *)(puVar15 + -0x14) = 0x3a775;\n      iVar13 = FUN_0001abe0();\n      if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }\n    }\nLAB_00039c69:\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39c72;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }\n  else {\n    local_2a = 0;\n    local_70[0] = 0;\n    *local_48 = 0;\n    local_70[3] = 100;\n    *local_3c[0] = 0;\n    local_44 = 0;\n    puVar16 = auStack_80;\n    do {\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    } while (*(int *)(puVar16 + 0x1c) != -1);\n    uVar14 = *(uint *)(param_1 + 300);\nLAB_00039e5f:\n    puVar17 = *(undefined1 **)(puVar16 + 0x44);\n    unaff_retaddr[0x158] = 1;\n    *puVar17 = 1;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }\n    puVar17 = puVar16 + 0x48;\nLAB_00039ea1:\n    *(undefined1 **)(puVar16 + -0x10) = puVar17;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39eaa;\n    FUN_0001ab40();\n    uVar9 = *(undefined4 *)(puVar16 + 0x48);\n    iVar13 = *(int *)(puVar16 + 0x20);\n    puVar15 = puVar16 + -4;\n    *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n    *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n    puVar4 = (undefined4 *)(puVar16 + -4);\n    if (*(int *)(puVar16 + 0x1c) == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    puVar4 = *(undefined4 **)(param_1 + 0x9c);\n    if (puVar4 != (undefined4 *)0x0) {\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }\n    puVar4 = *(undefined4 **)(param_1 + 0xa8);\n    if (puVar4 == (undefined4 *)0x0) goto LAB_00039c69;\n    uVar9 = *(undefined4 *)(param_1 + 0xb8);\n    *puVar4 = *(undefined4 *)(param_1 + 0xb4);\n    puVar4[1] = uVar9;\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39f0e;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }" if (parenthesized_expression "((local_70[4] == 0) ||\n     (((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0'))))" ( (binary_expression "(local_70[4] == 0) ||\n     (((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0')))" (parenthesized_expression "(local_70[4] == 0)" ( (binary_expression "local_70[4] == 0" (subscript_expression "local_70[4]" identifier [ number_literal ]) == number_literal) )) || (parenthesized_expression "(((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0')))" ( (parenthesized_expression "((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0'))" ( (binary_expression "(local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0')" (binary_expression "(local_78 & 1) == 0" (parenthesized_expression "(local_78 & 1)" ( (binary_expression "local_78 & 1" identifier & number_literal) )) == number_literal) && (parenthesized_expression "(*(char *)((int)unaff_retaddr + 0x261) == '\0')" ( (binary_expression "*(char *)((int)unaff_retaddr + 0x261) == '\0'" (pointer_expression "*(char *)((int)unaff_retaddr + 0x261)" * (cast_expression "(char *)((int)unaff_retaddr + 0x261)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_retaddr + 0x261)" ( (binary_expression "(int)unaff_retaddr + 0x261" (cast_expression "(int)unaff_retaddr" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) ))) )) (compound_statement "{\n    if (((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }\n      iVar13 = *(int *)(param_1 + 0x13c);\n      if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }\nLAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n      *(undefined4 *)(puVar16 + -0x14) = 0x39c18;\n      FUN_0001ab40();\n      uVar9 = *(undefined4 *)(puVar16 + 0x48);\n      iVar13 = *(int *)(puVar16 + 0x20);\n      puVar15 = puVar16 + -4;\n      *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n      *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n      goto LAB_00039ecb;\n    }\n    FUN_0001ab40(local_3c + 1);\n    *(undefined1 **)(param_1 + 0xcc) = local_3c[0];\n    *(undefined1 **)(param_1 + 0xd0) = local_3c[1];\n    puVar4 = &uStack_84;\nLAB_00039c5c:\n    puVar15 = (undefined1 *)puVar4;\n    if (*(int *)(param_1 + 0x110) == 1) {\n      iVar13 = *(int *)(puVar15 + 0x24);\n      *(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);\n      *(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);\n      *(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);\n      *(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);\n      *(undefined4 *)(puVar15 + -0x14) = 0x3a775;\n      iVar13 = FUN_0001abe0();\n      if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }\n    }\nLAB_00039c69:\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39c72;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }" { (if_statement "if (((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }\n      iVar13 = *(int *)(param_1 + 0x13c);\n      if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }\nLAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n      *(undefined4 *)(puVar16 + -0x14) = 0x39c18;\n      FUN_0001ab40();\n      uVar9 = *(undefined4 *)(puVar16 + 0x48);\n      iVar13 = *(int *)(puVar16 + 0x20);\n      puVar15 = puVar16 + -4;\n      *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n      *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n      goto LAB_00039ecb;\n    }" if (parenthesized_expression "(((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0))" ( (binary_expression "((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)" (parenthesized_expression "((*(uint *)(param_1 + 300) & 2) != 0)" ( (binary_expression "(*(uint *)(param_1 + 300) & 2) != 0" (parenthesized_expression "(*(uint *)(param_1 + 300) & 2)" ( (binary_expression "*(uint *)(param_1 + 300) & 2" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)" ( (comma_expression "local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0" (assignment_expression "local_70[4] = 0" (subscript_expression "local_70[4]" identifier [ number_literal ]) = number_literal) , (comma_expression "puVar16 = auStack_80, (local_78 & 2) != 0" (assignment_expression "puVar16 = auStack_80" identifier = identifier) , (binary_expression "(local_78 & 2) != 0" (parenthesized_expression "(local_78 & 2)" ( (binary_expression "local_78 & 2" identifier & number_literal) )) != number_literal))) ))) )) (compound_statement "{\nLAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }\n      iVar13 = *(int *)(param_1 + 0x13c);\n      if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }\nLAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n      *(undefined4 *)(puVar16 + -0x14) = 0x39c18;\n      FUN_0001ab40();\n      uVar9 = *(undefined4 *)(puVar16 + 0x48);\n      iVar13 = *(int *)(puVar16 + 0x20);\n      puVar15 = puVar16 + -4;\n      *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n      *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n      goto LAB_00039ecb;\n    }" { (labeled_statement "LAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }" statement_identifier : (if_statement "if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }" if (parenthesized_expression "((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0))" ( (binary_expression "(*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)" (parenthesized_expression "(*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0)" ( (binary_expression "*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0" (binary_expression "*(int *)(param_1 + 0xb0) == 0" (pointer_expression "*(int *)(param_1 + 0xb0)" * (cast_expression "(int *)(param_1 + 0xb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) )))) == number_literal) && (binary_expression "*(int *)(param_1 + 0xac) == 0" (pointer_expression "*(int *)(param_1 + 0xac)" * (cast_expression "(int *)(param_1 + 0xac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) )))) == number_literal)) )) && (parenthesized_expression "(*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)" ( (binary_expression "*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0" (binary_expression "*(int *)(param_1 + 0xb8) == 0" (pointer_expression "*(int *)(param_1 + 0xb8)" * (cast_expression "(int *)(param_1 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb8)" ( (binary_expression "param_1 + 0xb8" identifier + number_literal) )))) == number_literal) && (binary_expression "*(int *)(param_1 + 0xb4) == 0" (pointer_expression "*(int *)(param_1 + 0xb4)" * (cast_expression "(int *)(param_1 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb4)" ( (binary_expression "param_1 + 0xb4" identifier + number_literal) )))) == number_literal)) ))) )) (compound_statement "{\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }" { (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 7;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 7" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a3ed" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001c710();" (call_expression "FUN_0001c710()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar13 = *(int *)(param_1 + 0x13c);" (assignment_expression "iVar13 = *(int *)(param_1 + 0x13c)" identifier = (pointer_expression "*(int *)(param_1 + 0x13c)" * (cast_expression "(int *)(param_1 + 0x13c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x13c)" ( (binary_expression "param_1 + 0x13c" identifier + number_literal) ))))) ;) (if_statement "if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }" { (expression_statement "*(undefined4 *)(puVar16 + 8) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + 8) = 0" (pointer_expression "*(undefined4 *)(puVar16 + 8)" * (cast_expression "(undefined4 *)(puVar16 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a5fd" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00039100();" (assignment_expression "iVar13 = FUN_00039100()" identifier = (call_expression "FUN_00039100()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (expression_statement "uVar9 = *(undefined4 *)(puVar16 + 8);" (assignment_expression "uVar9 = *(undefined4 *)(puVar16 + 8)" identifier = (pointer_expression "*(undefined4 *)(puVar16 + 8)" * (cast_expression "(undefined4 *)(puVar16 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);" (assignment_expression "*(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c)" (pointer_expression "*(undefined4 *)(param_1 + 0x140)" * (cast_expression "(undefined4 *)(param_1 + 0x140)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xc6c)" * (cast_expression "(undefined4 *)(param_1 + 0xc6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc6c)" ( (binary_expression "param_1 + 0xc6c" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }" if (parenthesized_expression "(*(char *)(param_1 + 0x130) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x130) == '\0'" (pointer_expression "*(char *)(param_1 + 0x130)" * (cast_expression "(char *)(param_1 + 0x130)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }" { (if_statement "if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }" if (parenthesized_expression "((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             )" ( (binary_expression "(*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)" (parenthesized_expression "(*(int *)(param_1 + 0x110) == 2)" ( (binary_expression "*(int *)(param_1 + 0x110) == 2" (pointer_expression "*(int *)(param_1 + 0x110)" * (cast_expression "(int *)(param_1 + 0x110)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2" (pointer_expression "*(int *)(*(int *)(param_1 + 0x148) + 0x1a0)" * (cast_expression "(int *)(*(int *)(param_1 + 0x148) + 0x1a0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x148) + 0x1a0)" ( (binary_expression "*(int *)(param_1 + 0x148) + 0x1a0" (pointer_expression "*(int *)(param_1 + 0x148)" * (cast_expression "(int *)(param_1 + 0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x148)" ( (binary_expression "param_1 + 0x148" identifier + number_literal) )))) + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }" { (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffd" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "puVar17 = puVar16 + 0x48;" (assignment_expression "puVar17 = puVar16 + 0x48" identifier = (binary_expression "puVar16 + 0x48" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(param_1 + 0x110) = 1;" (assignment_expression "*(undefined4 *)(param_1 + 0x110) = 1" (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 **)(puVar16 + -0x10) = puVar17;" (assignment_expression "*(undefined1 **)(puVar16 + -0x10) = puVar17" (pointer_expression "*(undefined1 **)(puVar16 + -0x10)" * (cast_expression "(undefined1 **)(puVar16 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ac2f" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001ab40();" (call_expression "FUN_0001ab40()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar9 = *(undefined4 *)(puVar16 + 0x48);" (assignment_expression "uVar9 = *(undefined4 *)(puVar16 + 0x48)" identifier = (pointer_expression "*(undefined4 *)(puVar16 + 0x48)" * (cast_expression "(undefined4 *)(puVar16 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x48)" ( (binary_expression "puVar16 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = *(int *)(puVar16 + 0x20);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x20)" identifier = (pointer_expression "*(int *)(puVar16 + 0x20)" * (cast_expression "(int *)(puVar16 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);" (assignment_expression "*(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44)" (pointer_expression "*(undefined4 *)(iVar13 + 0x74)" * (cast_expression "(undefined4 *)(iVar13 + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x74)" ( (binary_expression "iVar13 + 0x74" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x44)" * (cast_expression "(undefined4 *)(puVar16 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x44)" ( (binary_expression "puVar16 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x78) = uVar9;" (assignment_expression "*(undefined4 *)(iVar13 + 0x78) = uVar9" (pointer_expression "*(undefined4 *)(iVar13 + 0x78)" * (cast_expression "(undefined4 *)(iVar13 + 0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x78)" ( (binary_expression "iVar13 + 0x78" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x1c) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + -0x1c) = 0" (pointer_expression "*(undefined4 *)(puVar16 + -0x1c)" * (cast_expression "(undefined4 *)(puVar16 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);" (assignment_expression "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8)" (pointer_expression "*(undefined4 *)(puVar16 + -0x20)" * (cast_expression "(undefined4 *)(puVar16 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x20)" ( (binary_expression "puVar16 + -0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xad8)" * (cast_expression "(undefined4 *)(param_1 + 0xad8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xad8)" ( (binary_expression "param_1 + 0xad8" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + -0x24) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x24) = param_1" (pointer_expression "*(int *)(puVar16 + -0x24)" * (cast_expression "(int *)(puVar16 + -0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x24)" ( (binary_expression "puVar16 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x28) = 0x3ac52;" (assignment_expression "*(undefined4 *)(puVar16 + -0x28) = 0x3ac52" (pointer_expression "*(undefined4 *)(puVar16 + -0x28)" * (cast_expression "(undefined4 *)(puVar16 + -0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00043260();" (call_expression "FUN_00043260()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar16 = puVar16 + -4;" (assignment_expression "puVar16 = puVar16 + -4" identifier = (binary_expression "puVar16 + -4" identifier + number_literal)) ;) (goto_statement "goto LAB_00039ea1;" goto statement_identifier ;) })) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;) (if_statement "if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }" if (parenthesized_expression "((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0)" ( (binary_expression "(*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0" (parenthesized_expression "(*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003)" ( (binary_expression "*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003" (pointer_expression "*(uint *)(unaff_retaddr[0x9f] + 0x40)" * (cast_expression "(uint *)(unaff_retaddr[0x9f] + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr[0x9f] + 0x40)" ( (binary_expression "unaff_retaddr[0x9f] + 0x40" (subscript_expression "unaff_retaddr[0x9f]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }" { (expression_statement "bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;" (assignment_expression "bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1" identifier = (binary_expression "*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1" (pointer_expression "*(int *)(*(int *)(param_1 + 0x148) + 0x1a0)" * (cast_expression "(int *)(*(int *)(param_1 + 0x148) + 0x1a0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x148) + 0x1a0)" ( (binary_expression "*(int *)(param_1 + 0x148) + 0x1a0" (pointer_expression "*(int *)(param_1 + 0x148)" * (cast_expression "(int *)(param_1 + 0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x148)" ( (binary_expression "param_1 + 0x148" identifier + number_literal) )))) + number_literal) )))) == number_literal)) ;) })) (expression_statement "*(undefined4 *)(puVar16 + 0x20) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + 0x20) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + 0x20)" * (cast_expression "(undefined4 *)(puVar16 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar16[0x1c] = bVar18;" (assignment_expression "puVar16[0x1c] = bVar18" (subscript_expression "puVar16[0x1c]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + 8) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + 8)" * (cast_expression "(undefined1 **)(puVar16 + 8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x58" identifier + number_literal)) ;) (expression_statement "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + -8)" * (cast_expression "(undefined1 **)(puVar16 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x58" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x8fc)" * (cast_expression "(undefined4 *)(param_1 + 0x8fc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x8fc)" ( (binary_expression "param_1 + 0x8fc" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a675;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a675" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00039150();" (assignment_expression "iVar13 = FUN_00039150()" identifier = (call_expression "FUN_00039150()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (expression_statement "iVar13 = *(int *)(puVar16 + 0x58);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x58)" identifier = (pointer_expression "*(int *)(puVar16 + 0x58)" * (cast_expression "(int *)(puVar16 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "cVar7 = puVar16[0x1c];" (assignment_expression "cVar7 = puVar16[0x1c]" identifier = (subscript_expression "puVar16[0x1c]" identifier [ number_literal ])) ;) (expression_statement "iVar10 = *(int *)(puVar16 + 0x20);" (assignment_expression "iVar10 = *(int *)(puVar16 + 0x20)" identifier = (pointer_expression "*(int *)(puVar16 + 0x20)" * (cast_expression "(int *)(puVar16 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + 0x10) = iVar13;" (assignment_expression "*(int *)(puVar16 + 0x10) = iVar13" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar13 == 0) goto LAB_0003a898;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0003a898;" goto statement_identifier ;)) (if_statement "if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }" if (parenthesized_expression "(0 < iVar13)" ( (binary_expression "0 < iVar13" number_literal < identifier) )) (compound_statement "{\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }" { (expression_statement "*(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);" (assignment_expression "*(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10)" (pointer_expression "*(undefined4 *)(param_1 + 0x13c)" * (cast_expression "(undefined4 *)(param_1 + 0x13c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x13c)" ( (binary_expression "param_1 + 0x13c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" * (cast_expression "(undefined4 *)(puVar16 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }" if (parenthesized_expression "((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0'))))" ( (binary_expression "(cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))" (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))" ( (parenthesized_expression "(*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0'))" ( (binary_expression "*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')" (binary_expression "*(char *)(param_1 + 0x927) != '\0'" (pointer_expression "*(char *)(param_1 + 0x927)" * (cast_expression "(char *)(param_1 + 0x927)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x927)" ( (binary_expression "param_1 + 0x927" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(*(char *)(param_1 + 0x7ea) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x7ea) != '\0'" (pointer_expression "*(char *)(param_1 + 0x7ea)" * (cast_expression "(char *)(param_1 + 0x7ea)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x7ea)" ( (binary_expression "param_1 + 0x7ea" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) ))) )) (compound_statement "{\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }" { (expression_statement "iVar13 = *(int *)(param_1 + 0xcb4);" (assignment_expression "iVar13 = *(int *)(param_1 + 0xcb4)" identifier = (pointer_expression "*(int *)(param_1 + 0xcb4)" * (cast_expression "(int *)(param_1 + 0xcb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xcb4)" ( (binary_expression "param_1 + 0xcb4" identifier + number_literal) ))))) ;) (if_statement "if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }" { (expression_statement "iVar13 = *(int *)(param_1 + 0x8fc);" (assignment_expression "iVar13 = *(int *)(param_1 + 0x8fc)" identifier = (pointer_expression "*(int *)(param_1 + 0x8fc)" * (cast_expression "(int *)(param_1 + 0x8fc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x8fc)" ( (binary_expression "param_1 + 0x8fc" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + 0x1c) = iVar10;" (assignment_expression "*(int *)(puVar16 + 0x1c) = iVar10" (pointer_expression "*(int *)(puVar16 + 0x1c)" * (cast_expression "(int *)(puVar16 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0x10) = iVar13 * 2;" (assignment_expression "*(int *)(puVar16 + -0x10) = iVar13 * 2" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (binary_expression "iVar13 * 2" identifier * number_literal)) ;) (expression_statement "pcVar3 = *(code **)(unaff_EBX + 0x77802);" (assignment_expression "pcVar3 = *(code **)(unaff_EBX + 0x77802)" identifier = (pointer_expression "*(code **)(unaff_EBX + 0x77802)" * (cast_expression "(code **)(unaff_EBX + 0x77802)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EBX + 0x77802)" ( (binary_expression "unaff_EBX + 0x77802" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ad10;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ad10" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = (*pcVar3)();" (assignment_expression "iVar13 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar10 = *(int *)(puVar16 + 0x1c);" (assignment_expression "iVar10 = *(int *)(puVar16 + 0x1c)" identifier = (pointer_expression "*(int *)(puVar16 + 0x1c)" * (cast_expression "(int *)(puVar16 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 0xcb4) = iVar13;" (assignment_expression "*(int *)(param_1 + 0xcb4) = iVar13" (pointer_expression "*(int *)(param_1 + 0xcb4)" * (cast_expression "(int *)(param_1 + 0xcb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xcb4)" ( (binary_expression "param_1 + 0xcb4" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }" { (expression_statement "*(int **)(puVar16 + -4) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -4) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -4)" * (cast_expression "(int **)(puVar16 + -4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar13 = 0x1b;" (assignment_expression "iVar13 = 0x1b" identifier = number_literal) ;) (expression_statement "*(int **)(puVar16 + -8) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -8) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -8)" * (cast_expression "(int **)(puVar16 + -8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "unaff_EBX + 0x47566" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ad39;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ad39" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027240();" (call_expression "FUN_00027240()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) })) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (expression_statement "*(int **)(puVar16 + 0x1c) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + 0x1c) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + 0x1c)" * (cast_expression "(int **)(puVar16 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) )))) = identifier) ;) (while_statement "while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }" { (expression_statement "iVar12 = iVar10 + 1;" (assignment_expression "iVar12 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);" (assignment_expression "cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11)" identifier = (pointer_expression "*(char *)(*(int *)(param_1 + 0x140) + iVar11)" * (cast_expression "(char *)(*(int *)(param_1 + 0x140) + iVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x140) + iVar11)" ( (binary_expression "*(int *)(param_1 + 0x140) + iVar11" (pointer_expression "*(int *)(param_1 + 0x140)" * (cast_expression "(int *)(param_1 + 0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) + identifier) ))))) ;) (if_statement "if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }" if (parenthesized_expression "(cVar7 == '\n')" ( (binary_expression "cVar7 == '\n'" identifier == (char_literal "'\n'" ' escape_sequence ')) )) (compound_statement "{\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }" { (expression_statement "*(char *)(iVar13 + iVar10) = '\r';" (assignment_expression "*(char *)(iVar13 + iVar10) = '\r'" (pointer_expression "*(char *)(iVar13 + iVar10)" * (cast_expression "(char *)(iVar13 + iVar10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + iVar10)" ( (binary_expression "iVar13 + iVar10" identifier + identifier) )))) = (char_literal "'\r'" ' escape_sequence ')) ;) (expression_statement "*(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;" (assignment_expression "*(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10" (pointer_expression "*(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10)" * (cast_expression "(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0xcb4) + 1 + iVar10)" ( (binary_expression "*(int *)(param_1 + 0xcb4) + 1 + iVar10" (binary_expression "*(int *)(param_1 + 0xcb4) + 1" (pointer_expression "*(int *)(param_1 + 0xcb4)" * (cast_expression "(int *)(param_1 + 0xcb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xcb4)" ( (binary_expression "param_1 + 0xcb4" identifier + number_literal) )))) + number_literal) + identifier) )))) = number_literal) ;) (expression_statement "iVar12 = iVar10 + 2;" (assignment_expression "iVar12 = iVar10 + 2" identifier = (binary_expression "iVar10 + 2" identifier + number_literal)) ;) (if_statement "if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }" if (parenthesized_expression "(*(char *)(param_1 + 0x7ea) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x7ea) == '\0'" (pointer_expression "*(char *)(param_1 + 0x7ea)" * (cast_expression "(char *)(param_1 + 0x7ea)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x7ea)" ( (binary_expression "param_1 + 0x7ea" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }" { (expression_statement "uVar14 = *(uint *)(param_1 + 0xecc);" (assignment_expression "uVar14 = *(uint *)(param_1 + 0xecc)" identifier = (pointer_expression "*(uint *)(param_1 + 0xecc)" * (cast_expression "(uint *)(param_1 + 0xecc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xecc)" ( (binary_expression "param_1 + 0xecc" identifier + number_literal) ))))) ;) (if_statement "if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }" if (parenthesized_expression "((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff)" ( (binary_expression "(*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff" (parenthesized_expression "(*(uint *)(param_1 + 0xed0) & uVar14)" ( (binary_expression "*(uint *)(param_1 + 0xed0) & uVar14" (pointer_expression "*(uint *)(param_1 + 0xed0)" * (cast_expression "(uint *)(param_1 + 0xed0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xed0)" ( (binary_expression "param_1 + 0xed0" identifier + number_literal) )))) & identifier) )) != number_literal) )) (compound_statement "{\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }" { (expression_statement "*(uint *)(param_1 + 0xecc) = uVar14 + 1;" (assignment_expression "*(uint *)(param_1 + 0xecc) = uVar14 + 1" (pointer_expression "*(uint *)(param_1 + 0xecc)" * (cast_expression "(uint *)(param_1 + 0xecc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xecc)" ( (binary_expression "param_1 + 0xecc" identifier + number_literal) )))) = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) (expression_statement "*(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);" (assignment_expression "*(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14)" (pointer_expression "*(uint *)(param_1 + 0xed0)" * (cast_expression "(uint *)(param_1 + 0xed0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xed0)" ( (binary_expression "param_1 + 0xed0" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14)" (pointer_expression "*(uint *)(param_1 + 0xed0)" * (cast_expression "(uint *)(param_1 + 0xed0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xed0)" ( (binary_expression "param_1 + 0xed0" identifier + number_literal) )))) + (call_expression "(uint)(0xfffffffe < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffe < uVar14)" ( (binary_expression "0xfffffffe < uVar14" number_literal < identifier) ))))) ;) })) })) }) (else_clause "else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }" else (compound_statement "{\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }" { (expression_statement "*(char *)(iVar13 + iVar10) = cVar7;" (assignment_expression "*(char *)(iVar13 + iVar10) = cVar7" (pointer_expression "*(char *)(iVar13 + iVar10)" * (cast_expression "(char *)(iVar13 + iVar10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + iVar10)" ( (binary_expression "iVar13 + iVar10" identifier + identifier) )))) = identifier) ;) }))) (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (if_statement "if (*(int *)(puVar16 + 0x10) == iVar11) break;" if (parenthesized_expression "(*(int *)(puVar16 + 0x10) == iVar11)" ( (binary_expression "*(int *)(puVar16 + 0x10) == iVar11" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) == identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar13 = *(int *)(param_1 + 0xcb4);" (assignment_expression "iVar13 = *(int *)(param_1 + 0xcb4)" identifier = (pointer_expression "*(int *)(param_1 + 0xcb4)" * (cast_expression "(int *)(param_1 + 0xcb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xcb4)" ( (binary_expression "param_1 + 0xcb4" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = iVar12;" (assignment_expression "iVar10 = iVar12" identifier = identifier) ;) })) (expression_statement "unaff_retaddr = *(int **)(puVar16 + 0x1c);" (assignment_expression "unaff_retaddr = *(int **)(puVar16 + 0x1c)" identifier = (pointer_expression "*(int **)(puVar16 + 0x1c)" * (cast_expression "(int **)(puVar16 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }" if (parenthesized_expression "(*(int *)(puVar16 + 0x10) != iVar12)" ( (binary_expression "*(int *)(puVar16 + 0x10) != iVar12" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }" { (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0xcb4);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0xcb4)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xcb4)" * (cast_expression "(undefined4 *)(param_1 + 0xcb4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xcb4)" ( (binary_expression "param_1 + 0xcb4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 0x13c) = iVar12;" (assignment_expression "*(int *)(param_1 + 0x13c) = iVar12" (pointer_expression "*(int *)(param_1 + 0x13c)" * (cast_expression "(int *)(param_1 + 0x13c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x13c)" ( (binary_expression "param_1 + 0x13c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + 0x10) = iVar12;" (assignment_expression "*(int *)(puVar16 + 0x10) = iVar12" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0x140) = uVar9;" (assignment_expression "*(undefined4 *)(param_1 + 0x140) = uVar9" (pointer_expression "*(undefined4 *)(param_1 + 0x140)" * (cast_expression "(undefined4 *)(param_1 + 0x140)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) = identifier) ;) })) })) (if_statement "if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }" if (parenthesized_expression "((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0)" ( (binary_expression "(*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0" (parenthesized_expression "(*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000)" ( (binary_expression "*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000" (pointer_expression "*(uint *)(unaff_retaddr[0x9f] + 0x40)" * (cast_expression "(uint *)(unaff_retaddr[0x9f] + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr[0x9f] + 0x40)" ( (binary_expression "unaff_retaddr[0x9f] + 0x40" (subscript_expression "unaff_retaddr[0x9f]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }" { (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" * (cast_expression "(undefined4 *)(puVar16 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ac67;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ac67" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00057f10();" (assignment_expression "iVar13 = FUN_00057f10()" identifier = (call_expression "FUN_00057f10()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) })) (expression_statement "iVar13 = *(int *)(param_1 + 0x13c);" (assignment_expression "iVar13 = *(int *)(param_1 + 0x13c)" identifier = (pointer_expression "*(int *)(param_1 + 0x13c)" * (cast_expression "(int *)(param_1 + 0x13c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x13c)" ( (binary_expression "param_1 + 0x13c" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00039b53;" goto statement_identifier ;) })) (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" identifier = (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ;) }) (else_clause "else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }" else (compound_statement "{\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }" { (labeled_statement "LAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);" statement_identifier : (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" identifier = (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ;)) (if_statement "if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;" if (parenthesized_expression "((uVar14 & 0x20) != 0)" ( (binary_expression "(uVar14 & 0x20) != 0" (parenthesized_expression "(uVar14 & 0x20)" ( (binary_expression "uVar14 & 0x20" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00039c0b;" goto statement_identifier ;)) }))) (expression_statement "*(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;" (assignment_expression "*(uint *)(param_1 + 300) = uVar14 & 0xfffffffd" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = (binary_expression "uVar14 & 0xfffffffd" identifier & number_literal)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a8b8" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000647d0();" (call_expression "FUN_000647d0()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }" if (parenthesized_expression "(*(char *)((int)unaff_retaddr + 0x25b) != '\0')" ( (binary_expression "*(char *)((int)unaff_retaddr + 0x25b) != '\0'" (pointer_expression "*(char *)((int)unaff_retaddr + 0x25b)" * (cast_expression "(char *)((int)unaff_retaddr + 0x25b)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_retaddr + 0x25b)" ( (binary_expression "(int)unaff_retaddr + 0x25b" (cast_expression "(int)unaff_retaddr" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }" { (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a8d1" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00039660();" (assignment_expression "iVar13 = FUN_00039660()" identifier = (call_expression "FUN_00039660()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) })) }) (else_clause "else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }" else (compound_statement "{\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }" { (expression_statement "*(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + 8) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + 8)" * (cast_expression "(undefined1 **)(puVar16 + 8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x58" identifier + number_literal)) ;) (labeled_statement "LAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);" statement_identifier : (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 8)" * (cast_expression "(undefined4 *)(puVar16 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) ))))) ;)) (expression_statement "*(int *)(puVar16 + -0x14) = iVar13;" (assignment_expression "*(int *)(puVar16 + -0x14) = iVar13" (pointer_expression "*(int *)(puVar16 + -0x14)" * (cast_expression "(int *)(puVar16 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140)" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x140)" * (cast_expression "(undefined4 *)(param_1 + 0x140)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];" (assignment_expression "*(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6]" (pointer_expression "*(int *)(puVar16 + -0x1c)" * (cast_expression "(int *)(puVar16 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = (subscript_expression "unaff_retaddr[0xa6]" identifier [ number_literal ])) ;) (expression_statement "*(int **)(puVar16 + -0x20) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x20) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x20)" * (cast_expression "(int **)(puVar16 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x20)" ( (binary_expression "puVar16 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = 0x39b6d;" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = 0x39b6d" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" * (cast_expression "(undefined4 *)(puVar16 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x24)" ( (binary_expression "puVar16 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00026df0();" (assignment_expression "iVar13 = FUN_00026df0()" identifier = (call_expression "FUN_00026df0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (expression_statement "uVar14 = *(uint *)(puVar16 + 0x58);" (assignment_expression "uVar14 = *(uint *)(puVar16 + 0x58)" identifier = (pointer_expression "*(uint *)(puVar16 + 0x58)" * (cast_expression "(uint *)(puVar16 + 0x58)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }" if (parenthesized_expression "(*(char *)(param_1 + 0x93c) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x93c) != '\0'" (pointer_expression "*(char *)(param_1 + 0x93c)" * (cast_expression "(char *)(param_1 + 0x93c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x93c)" ( (binary_expression "param_1 + 0x93c" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }" { (expression_statement "*(uint *)(puVar16 + -4) = uVar14;" (assignment_expression "*(uint *)(puVar16 + -4) = uVar14" (pointer_expression "*(uint *)(puVar16 + -4)" * (cast_expression "(uint *)(puVar16 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x140)" * (cast_expression "(undefined4 *)(param_1 + 0x140)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 4;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 4" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a8f7" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027090();" (call_expression "FUN_00027090()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar14 = *(uint *)(puVar16 + 0x58);" (assignment_expression "uVar14 = *(uint *)(puVar16 + 0x58)" identifier = (pointer_expression "*(uint *)(puVar16 + 0x58)" * (cast_expression "(uint *)(puVar16 + 0x58)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) })) (expression_statement "iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);" (assignment_expression "iVar13 = uVar14 + *(uint *)(param_1 + 0xb4)" identifier = (binary_expression "uVar14 + *(uint *)(param_1 + 0xb4)" identifier + (pointer_expression "*(uint *)(param_1 + 0xb4)" * (cast_expression "(uint *)(param_1 + 0xb4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb4)" ( (binary_expression "param_1 + 0xb4" identifier + number_literal) )))))) ;) (expression_statement "iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));" (assignment_expression "iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4))" identifier = (binary_expression "((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4))" (binary_expression "((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8)" (parenthesized_expression "((int)uVar14 >> 0x1f)" ( (binary_expression "(int)uVar14 >> 0x1f" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + (pointer_expression "*(int *)(param_1 + 0xb8)" * (cast_expression "(int *)(param_1 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb8)" ( (binary_expression "param_1 + 0xb8" identifier + number_literal) ))))) + (cast_expression "(uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar14,*(uint *)(param_1 + 0xb4))" identifier (argument_list "(uVar14,*(uint *)(param_1 + 0xb4))" ( identifier , (pointer_expression "*(uint *)(param_1 + 0xb4)" * (cast_expression "(uint *)(param_1 + 0xb4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb4)" ( (binary_expression "param_1 + 0xb4" identifier + number_literal) )))) )))))) ;) (expression_statement "cVar7 = *(char *)(param_1 + 0x145);" (assignment_expression "cVar7 = *(char *)(param_1 + 0x145)" identifier = (pointer_expression "*(char *)(param_1 + 0x145)" * (cast_expression "(char *)(param_1 + 0x145)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x145)" ( (binary_expression "param_1 + 0x145" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + 8) = iVar13;" (assignment_expression "*(int *)(puVar16 + 8) = iVar13" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + 0xc) = iVar10;" (assignment_expression "*(int *)(puVar16 + 0xc) = iVar10" (pointer_expression "*(int *)(puVar16 + 0xc)" * (cast_expression "(int *)(puVar16 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0xb4) = iVar13;" (assignment_expression "*(int *)(param_1 + 0xb4) = iVar13" (pointer_expression "*(int *)(param_1 + 0xb4)" * (cast_expression "(int *)(param_1 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb4)" ( (binary_expression "param_1 + 0xb4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0xb8) = iVar10;" (assignment_expression "*(int *)(param_1 + 0xb8) = iVar10" (pointer_expression "*(int *)(param_1 + 0xb8)" * (cast_expression "(int *)(param_1 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb8)" ( (binary_expression "param_1 + 0xb8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }" if (parenthesized_expression "(((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc)))" ( (binary_expression "((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))" (parenthesized_expression "((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0'))" ( (binary_expression "(cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')" (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(char *)(param_1 + 0x147) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x147) != '\0'" (pointer_expression "*(char *)(param_1 + 0x147)" * (cast_expression "(char *)(param_1 + 0x147)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x147)" ( (binary_expression "param_1 + 0x147" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))" ( (binary_expression "*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc)" (binary_expression "*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0)" (pointer_expression "*(int *)(puVar16 + 0xc)" * (cast_expression "(int *)(puVar16 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) == (pointer_expression "*(int *)(param_1 + 0xed0)" * (cast_expression "(int *)(param_1 + 0xed0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xed0)" ( (binary_expression "param_1 + 0xed0" identifier + number_literal) ))))) && (binary_expression "*(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc)" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) == (pointer_expression "*(int *)(param_1 + 0xecc)" * (cast_expression "(int *)(param_1 + 0xecc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xecc)" ( (binary_expression "param_1 + 0xecc" identifier + number_literal) )))))) ))) )) (compound_statement "{\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }" { (expression_statement "*(undefined1 *)(param_1 + 0x130) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x130) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x130)" * (cast_expression "(undefined1 *)(param_1 + 0x130)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "unaff_EBX + 0x47586" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a937;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a937" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar14 = *(uint *)(puVar16 + 0x58);" (assignment_expression "uVar14 = *(uint *)(puVar16 + 0x58)" identifier = (pointer_expression "*(uint *)(puVar16 + 0x58)" * (cast_expression "(uint *)(puVar16 + 0x58)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) })) (if_statement "if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }" if (parenthesized_expression "(*(uint *)(param_1 + 0x13c) == uVar14)" ( (binary_expression "*(uint *)(param_1 + 0x13c) == uVar14" (pointer_expression "*(uint *)(param_1 + 0x13c)" * (cast_expression "(uint *)(param_1 + 0x13c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x13c)" ( (binary_expression "param_1 + 0x13c" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }" { (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3aae9;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3aae9" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00039100();" (assignment_expression "iVar13 = FUN_00039100()" identifier = (call_expression "FUN_00039100()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)(param_1 + 0x13c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x13c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x13c)" * (cast_expression "(undefined4 *)(param_1 + 0x13c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x13c)" ( (binary_expression "param_1 + 0x13c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);" (assignment_expression "*(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c)" (pointer_expression "*(undefined4 *)(param_1 + 0x140)" * (cast_expression "(undefined4 *)(param_1 + 0x140)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xc6c)" * (cast_expression "(undefined4 *)(param_1 + 0xc6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc6c)" ( (binary_expression "param_1 + 0xc6c" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }" if (parenthesized_expression "(*(char *)(param_1 + 0x130) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x130) != '\0'" (pointer_expression "*(char *)(param_1 + 0x130)" * (cast_expression "(char *)(param_1 + 0x130)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }" { (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffd" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ab29;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ab29" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000647d0();" (call_expression "FUN_000647d0()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }" if (parenthesized_expression "(*(char *)((int)unaff_retaddr + 0x25b) != '\0')" ( (binary_expression "*(char *)((int)unaff_retaddr + 0x25b) != '\0'" (pointer_expression "*(char *)((int)unaff_retaddr + 0x25b)" * (cast_expression "(char *)((int)unaff_retaddr + 0x25b)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_retaddr + 0x25b)" ( (binary_expression "(int)unaff_retaddr + 0x25b" (cast_expression "(int)unaff_retaddr" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }" { (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ab42;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ab42" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00039660();" (assignment_expression "iVar13 = FUN_00039660()" identifier = (call_expression "FUN_00039660()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) })) })) }) (else_clause "else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }" else (compound_statement "{\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }" { (expression_statement "*(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;" (assignment_expression "*(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14" (pointer_expression "*(int *)(param_1 + 0x140)" * (cast_expression "(int *)(param_1 + 0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x140) + uVar14" (pointer_expression "*(int *)(param_1 + 0x140)" * (cast_expression "(int *)(param_1 + 0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) + identifier)) ;) (expression_statement "*(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;" (assignment_expression "*(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14" (pointer_expression "*(uint *)(param_1 + 0x13c)" * (cast_expression "(uint *)(param_1 + 0x13c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x13c)" ( (binary_expression "param_1 + 0x13c" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 0x13c) - uVar14" (pointer_expression "*(uint *)(param_1 + 0x13c)" * (cast_expression "(uint *)(param_1 + 0x13c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x13c)" ( (binary_expression "param_1 + 0x13c" identifier + number_literal) )))) - identifier)) ;) }))) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xb8)" * (cast_expression "(undefined4 *)(param_1 + 0xb8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb8)" ( (binary_expression "param_1 + 0xb8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xb4)" * (cast_expression "(undefined4 *)(param_1 + 0xb4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb4)" ( (binary_expression "param_1 + 0xb4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39c08;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39c08" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001cb10();" (call_expression "FUN_0001cb10()" identifier (argument_list "()" ( ))) ;) }))) (labeled_statement "LAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;" statement_identifier : (expression_statement "*(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;" (assignment_expression "*(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48" (pointer_expression "*(undefined1 **)(puVar16 + -0x10)" * (cast_expression "(undefined1 **)(puVar16 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x48" identifier + number_literal)) ;)) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39c18;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39c18" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001ab40();" (call_expression "FUN_0001ab40()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar9 = *(undefined4 *)(puVar16 + 0x48);" (assignment_expression "uVar9 = *(undefined4 *)(puVar16 + 0x48)" identifier = (pointer_expression "*(undefined4 *)(puVar16 + 0x48)" * (cast_expression "(undefined4 *)(puVar16 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x48)" ( (binary_expression "puVar16 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = *(int *)(puVar16 + 0x20);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x20)" identifier = (pointer_expression "*(int *)(puVar16 + 0x20)" * (cast_expression "(int *)(puVar16 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "puVar15 = puVar16 + -4;" (assignment_expression "puVar15 = puVar16 + -4" identifier = (binary_expression "puVar16 + -4" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);" (assignment_expression "*(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44)" (pointer_expression "*(undefined4 *)(iVar13 + 0x38)" * (cast_expression "(undefined4 *)(iVar13 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x38)" ( (binary_expression "iVar13 + 0x38" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x44)" * (cast_expression "(undefined4 *)(puVar16 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x44)" ( (binary_expression "puVar16 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x3c) = uVar9;" (assignment_expression "*(undefined4 *)(iVar13 + 0x3c) = uVar9" (pointer_expression "*(undefined4 *)(iVar13 + 0x3c)" * (cast_expression "(undefined4 *)(iVar13 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x3c)" ( (binary_expression "iVar13 + 0x3c" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_00039ecb;" goto statement_identifier ;) })) (expression_statement "FUN_0001ab40(local_3c + 1);" (call_expression "FUN_0001ab40(local_3c + 1)" identifier (argument_list "(local_3c + 1)" ( (binary_expression "local_3c + 1" identifier + number_literal) ))) ;) (expression_statement "*(undefined1 **)(param_1 + 0xcc) = local_3c[0];" (assignment_expression "*(undefined1 **)(param_1 + 0xcc) = local_3c[0]" (pointer_expression "*(undefined1 **)(param_1 + 0xcc)" * (cast_expression "(undefined1 **)(param_1 + 0xcc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xcc)" ( (binary_expression "param_1 + 0xcc" identifier + number_literal) )))) = (subscript_expression "local_3c[0]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 **)(param_1 + 0xd0) = local_3c[1];" (assignment_expression "*(undefined1 **)(param_1 + 0xd0) = local_3c[1]" (pointer_expression "*(undefined1 **)(param_1 + 0xd0)" * (cast_expression "(undefined1 **)(param_1 + 0xd0)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xd0)" ( (binary_expression "param_1 + 0xd0" identifier + number_literal) )))) = (subscript_expression "local_3c[1]" identifier [ number_literal ])) ;) (expression_statement "puVar4 = &uStack_84;" (assignment_expression "puVar4 = &uStack_84" identifier = (pointer_expression "&uStack_84" & identifier)) ;) (labeled_statement "LAB_00039c5c:\n    puVar15 = (undefined1 *)puVar4;" statement_identifier : (expression_statement "puVar15 = (undefined1 *)puVar4;" (assignment_expression "puVar15 = (undefined1 *)puVar4" identifier = (cast_expression "(undefined1 *)puVar4" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) (if_statement "if (*(int *)(param_1 + 0x110) == 1) {\n      iVar13 = *(int *)(puVar15 + 0x24);\n      *(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);\n      *(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);\n      *(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);\n      *(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);\n      *(undefined4 *)(puVar15 + -0x14) = 0x3a775;\n      iVar13 = FUN_0001abe0();\n      if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x110) == 1)" ( (binary_expression "*(int *)(param_1 + 0x110) == 1" (pointer_expression "*(int *)(param_1 + 0x110)" * (cast_expression "(int *)(param_1 + 0x110)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      iVar13 = *(int *)(puVar15 + 0x24);\n      *(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);\n      *(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);\n      *(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);\n      *(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);\n      *(undefined4 *)(puVar15 + -0x14) = 0x3a775;\n      iVar13 = FUN_0001abe0();\n      if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }\n    }" { (expression_statement "iVar13 = *(int *)(puVar15 + 0x24);" (assignment_expression "iVar13 = *(int *)(puVar15 + 0x24)" identifier = (pointer_expression "*(int *)(puVar15 + 0x24)" * (cast_expression "(int *)(puVar15 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + 0x24)" ( (binary_expression "puVar15 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);" (assignment_expression "*(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78)" (pointer_expression "*(undefined4 *)(puVar15 + -4)" * (cast_expression "(undefined4 *)(puVar15 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -4)" ( (binary_expression "puVar15 + -4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar13 + 0x78)" * (cast_expression "(undefined4 *)(iVar13 + 0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x78)" ( (binary_expression "iVar13 + 0x78" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);" (assignment_expression "*(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74)" (pointer_expression "*(undefined4 *)(puVar15 + -8)" * (cast_expression "(undefined4 *)(puVar15 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -8)" ( (binary_expression "puVar15 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar13 + 0x74)" * (cast_expression "(undefined4 *)(iVar13 + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x74)" ( (binary_expression "iVar13 + 0x74" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);" (assignment_expression "*(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c)" (pointer_expression "*(undefined4 *)(puVar15 + -0xc)" * (cast_expression "(undefined4 *)(puVar15 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0xc)" ( (binary_expression "puVar15 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar13 + 0x3c)" * (cast_expression "(undefined4 *)(iVar13 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x3c)" ( (binary_expression "iVar13 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);" (assignment_expression "*(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38)" (pointer_expression "*(undefined4 *)(puVar15 + -0x10)" * (cast_expression "(undefined4 *)(puVar15 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar13 + 0x38)" * (cast_expression "(undefined4 *)(iVar13 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x38)" ( (binary_expression "iVar13 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x3a775;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x3a775" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" * (cast_expression "(undefined4 *)(puVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_0001abe0();" (assignment_expression "iVar13 = FUN_0001abe0()" identifier = (call_expression "FUN_0001abe0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0xad8) <= iVar13)" ( (binary_expression "*(int *)(param_1 + 0xad8) <= iVar13" (pointer_expression "*(int *)(param_1 + 0xad8)" * (cast_expression "(int *)(param_1 + 0xad8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xad8)" ( (binary_expression "param_1 + 0xad8" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }" { (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 300) | 2" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(undefined4 *)(param_1 + 0x110) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x110) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar15 + -0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar15 + -0xc) = 0" (pointer_expression "*(undefined4 *)(puVar15 + -0xc)" * (cast_expression "(undefined4 *)(puVar15 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0xc)" ( (binary_expression "puVar15 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar15 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar15 + -0x10) = param_1" (pointer_expression "*(int *)(puVar15 + -0x10)" * (cast_expression "(int *)(puVar15 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x3a7a0" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" * (cast_expression "(undefined4 *)(puVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00043c20();" (call_expression "FUN_00043c20()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;" (assignment_expression "*(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae" (pointer_expression "*(int *)(puVar15 + -0xc)" * (cast_expression "(int *)(puVar15 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0xc)" ( (binary_expression "puVar15 + -0xc" identifier + number_literal) )))) = (binary_expression "unaff_EBX + 0x475ae" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar15 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar15 + -0x10) = param_1" (pointer_expression "*(int *)(puVar15 + -0x10)" * (cast_expression "(int *)(puVar15 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x3a7af;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x3a7af" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" * (cast_expression "(undefined4 *)(puVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) })) })) (labeled_statement "LAB_00039c69:\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;" statement_identifier : (expression_statement "*(int **)(puVar15 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar15 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar15 + -0x10)" * (cast_expression "(int **)(puVar15 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = identifier) ;)) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x39c72;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x39c72" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" * (cast_expression "(undefined4 *)(puVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_0001cc10();" (assignment_expression "iVar13 = FUN_0001cc10()" identifier = (call_expression "FUN_0001cc10()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar16 = puVar15;" (assignment_expression "puVar16 = puVar15" identifier = identifier) ;) }) (else_clause "else {\n    local_2a = 0;\n    local_70[0] = 0;\n    *local_48 = 0;\n    local_70[3] = 100;\n    *local_3c[0] = 0;\n    local_44 = 0;\n    puVar16 = auStack_80;\n    do {\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    } while (*(int *)(puVar16 + 0x1c) != -1);\n    uVar14 = *(uint *)(param_1 + 300);\nLAB_00039e5f:\n    puVar17 = *(undefined1 **)(puVar16 + 0x44);\n    unaff_retaddr[0x158] = 1;\n    *puVar17 = 1;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }\n    puVar17 = puVar16 + 0x48;\nLAB_00039ea1:\n    *(undefined1 **)(puVar16 + -0x10) = puVar17;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39eaa;\n    FUN_0001ab40();\n    uVar9 = *(undefined4 *)(puVar16 + 0x48);\n    iVar13 = *(int *)(puVar16 + 0x20);\n    puVar15 = puVar16 + -4;\n    *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n    *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n    puVar4 = (undefined4 *)(puVar16 + -4);\n    if (*(int *)(puVar16 + 0x1c) == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    puVar4 = *(undefined4 **)(param_1 + 0x9c);\n    if (puVar4 != (undefined4 *)0x0) {\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }\n    puVar4 = *(undefined4 **)(param_1 + 0xa8);\n    if (puVar4 == (undefined4 *)0x0) goto LAB_00039c69;\n    uVar9 = *(undefined4 *)(param_1 + 0xb8);\n    *puVar4 = *(undefined4 *)(param_1 + 0xb4);\n    puVar4[1] = uVar9;\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39f0e;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }" else (compound_statement "{\n    local_2a = 0;\n    local_70[0] = 0;\n    *local_48 = 0;\n    local_70[3] = 100;\n    *local_3c[0] = 0;\n    local_44 = 0;\n    puVar16 = auStack_80;\n    do {\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    } while (*(int *)(puVar16 + 0x1c) != -1);\n    uVar14 = *(uint *)(param_1 + 300);\nLAB_00039e5f:\n    puVar17 = *(undefined1 **)(puVar16 + 0x44);\n    unaff_retaddr[0x158] = 1;\n    *puVar17 = 1;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }\n    puVar17 = puVar16 + 0x48;\nLAB_00039ea1:\n    *(undefined1 **)(puVar16 + -0x10) = puVar17;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39eaa;\n    FUN_0001ab40();\n    uVar9 = *(undefined4 *)(puVar16 + 0x48);\n    iVar13 = *(int *)(puVar16 + 0x20);\n    puVar15 = puVar16 + -4;\n    *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n    *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n    puVar4 = (undefined4 *)(puVar16 + -4);\n    if (*(int *)(puVar16 + 0x1c) == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    puVar4 = *(undefined4 **)(param_1 + 0x9c);\n    if (puVar4 != (undefined4 *)0x0) {\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }\n    puVar4 = *(undefined4 **)(param_1 + 0xa8);\n    if (puVar4 == (undefined4 *)0x0) goto LAB_00039c69;\n    uVar9 = *(undefined4 *)(param_1 + 0xb8);\n    *puVar4 = *(undefined4 *)(param_1 + 0xb4);\n    puVar4[1] = uVar9;\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39f0e;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }" { (expression_statement "local_2a = 0;" (assignment_expression "local_2a = 0" identifier = number_literal) ;) (expression_statement "local_70[0] = 0;" (assignment_expression "local_70[0] = 0" (subscript_expression "local_70[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*local_48 = 0;" (assignment_expression "*local_48 = 0" (pointer_expression "*local_48" * identifier) = number_literal) ;) (expression_statement "local_70[3] = 100;" (assignment_expression "local_70[3] = 100" (subscript_expression "local_70[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*local_3c[0] = 0;" (assignment_expression "*local_3c[0] = 0" (pointer_expression "*local_3c[0]" * (subscript_expression "local_3c[0]" identifier [ number_literal ])) = number_literal) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "puVar16 = auStack_80;" (assignment_expression "puVar16 = auStack_80" identifier = identifier) ;) (do_statement "do {\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    } while (*(int *)(puVar16 + 0x1c) != -1);" do (compound_statement "{\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    }" { (expression_statement "uVar14 = *(uint *)(param_1 + 0x8f8);" (assignment_expression "uVar14 = *(uint *)(param_1 + 0x8f8)" identifier = (pointer_expression "*(uint *)(param_1 + 0x8f8)" * (cast_expression "(uint *)(param_1 + 0x8f8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x8f8)" ( (binary_expression "param_1 + 0x8f8" identifier + number_literal) ))))) ;) (if_statement "if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }" if (parenthesized_expression "(((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14))" ( (binary_expression "((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)" (parenthesized_expression "((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0)" ( (binary_expression "(*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0" (parenthesized_expression "(*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3)" ( (binary_expression "*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3" (pointer_expression "*(byte *)(unaff_retaddr[0x9f] + 0x40)" * (cast_expression "(byte *)(unaff_retaddr[0x9f] + 0x40)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr[0x9f] + 0x40)" ( (binary_expression "unaff_retaddr[0x9f] + 0x40" (subscript_expression "unaff_retaddr[0x9f]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "(unaff_retaddr[0x5e] != 0x14)" ( (binary_expression "unaff_retaddr[0x5e] != 0x14" (subscript_expression "unaff_retaddr[0x5e]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }" { (expression_statement "uVar2 = *(uint *)(param_1 + 0x94);" (assignment_expression "uVar2 = *(uint *)(param_1 + 0x94)" identifier = (pointer_expression "*(uint *)(param_1 + 0x94)" * (cast_expression "(uint *)(param_1 + 0x94)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) ))))) ;) (if_statement "if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }" if (parenthesized_expression "(((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14)))))" ( (binary_expression "((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))" (parenthesized_expression "((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff)" ( (binary_expression "(*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff" (parenthesized_expression "(*(uint *)(param_1 + 0x98) & uVar2)" ( (binary_expression "*(uint *)(param_1 + 0x98) & uVar2" (pointer_expression "*(uint *)(param_1 + 0x98)" * (cast_expression "(uint *)(param_1 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) )))) & identifier) )) != number_literal) )) && (parenthesized_expression "((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))" ( (parenthesized_expression "(*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14)))" ( (binary_expression "*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))" (binary_expression "*(char *)(param_1 + 0xd4) == '\0'" (pointer_expression "*(char *)(param_1 + 0xd4)" * (cast_expression "(char *)(param_1 + 0xd4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd4)" ( (binary_expression "param_1 + 0xd4" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))" ( (comma_expression "uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14)" (assignment_expression "uVar8 = uVar2 - *(uint *)(param_1 + 0xac)" identifier = (binary_expression "uVar2 - *(uint *)(param_1 + 0xac)" identifier - (pointer_expression "*(uint *)(param_1 + 0xac)" * (cast_expression "(uint *)(param_1 + 0xac)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) )))))) , (binary_expression "(int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14)" (cast_expression "(int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac)))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac)))" ( (binary_expression "(*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))" (parenthesized_expression "(*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0))" ( (binary_expression "*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)" (pointer_expression "*(uint *)(param_1 + 0x98)" * (cast_expression "(uint *)(param_1 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_1 + 0xb0)" * (cast_expression "(int *)(param_1 + 0xb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) )) - (call_expression "(uint)(uVar2 < *(uint *)(param_1 + 0xac))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 < *(uint *)(param_1 + 0xac))" ( (binary_expression "uVar2 < *(uint *)(param_1 + 0xac)" identifier < (pointer_expression "*(uint *)(param_1 + 0xac)" * (cast_expression "(uint *)(param_1 + 0xac)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) ))))) )))) ))) < (cast_expression "(int)(uint)(uVar8 < uVar14)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(uVar8 < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < uVar14)" ( (binary_expression "uVar8 < uVar14" identifier < identifier) )))))) ))) )) ))) )) (compound_statement "{\n          uVar14 = uVar8;\n        }" { (expression_statement "uVar14 = uVar8;" (assignment_expression "uVar14 = uVar8" identifier = identifier) ;) })) })) (if_statement "if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }" if (parenthesized_expression "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) )) (compound_statement "{\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }" { (expression_statement "*(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + -0x10)" * (cast_expression "(undefined1 **)(puVar16 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x58" identifier + number_literal)) ;) (expression_statement "*(uint *)(puVar16 + -0x14) = uVar14;" (assignment_expression "*(uint *)(puVar16 + -0x14) = uVar14" (pointer_expression "*(uint *)(puVar16 + -0x14)" * (cast_expression "(uint *)(puVar16 + -0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124)" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x124)" * (cast_expression "(undefined4 *)(param_1 + 0x124)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x124)" ( (binary_expression "param_1 + 0x124" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];" (assignment_expression "*(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5]" (pointer_expression "*(int *)(puVar16 + -0x1c)" * (cast_expression "(int *)(puVar16 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = (subscript_expression "unaff_retaddr[0xa5]" identifier [ number_literal ])) ;) (expression_statement "*(int **)(puVar16 + -0x20) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x20) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x20)" * (cast_expression "(int **)(puVar16 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x20)" ( (binary_expression "puVar16 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = 0x39f63;" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = 0x39f63" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" * (cast_expression "(undefined4 *)(puVar16 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x24)" ( (binary_expression "puVar16 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00026f00();" (assignment_expression "iVar13 = FUN_00026f00()" identifier = (call_expression "FUN_00026f00()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }" if (parenthesized_expression "(iVar13 != 0x51)" ( (binary_expression "iVar13 != 0x51" identifier != number_literal) )) (compound_statement "{\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }" { (if_statement "if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }" { (if_statement "if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;" if (parenthesized_expression "((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0))" ( (binary_expression "(*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)" (parenthesized_expression "(*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0)" ( (binary_expression "*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0" (binary_expression "*(int *)(param_1 + 0xb0) == 0" (pointer_expression "*(int *)(param_1 + 0xb0)" * (cast_expression "(int *)(param_1 + 0xb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) )))) == number_literal) && (binary_expression "*(int *)(param_1 + 0xac) == 0" (pointer_expression "*(int *)(param_1 + 0xac)" * (cast_expression "(int *)(param_1 + 0xac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) )))) == number_literal)) )) && (parenthesized_expression "(*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)" ( (binary_expression "*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0" (binary_expression "*(int *)(param_1 + 0xb8) == 0" (pointer_expression "*(int *)(param_1 + 0xb8)" * (cast_expression "(int *)(param_1 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb8)" ( (binary_expression "param_1 + 0xb8" identifier + number_literal) )))) == number_literal) && (binary_expression "*(int *)(param_1 + 0xb4) == 0" (pointer_expression "*(int *)(param_1 + 0xb4)" * (cast_expression "(int *)(param_1 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb4)" ( (binary_expression "param_1 + 0xb4" identifier + number_literal) )))) == number_literal)) ))) )) (goto_statement "goto LAB_00039f9b;" goto statement_identifier ;)) (goto_statement "goto LAB_000399eb;" goto statement_identifier ;) })) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" identifier = (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);" (assignment_expression "*(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10)" (pointer_expression "*(undefined4 *)(puVar16 + 0x20)" * (cast_expression "(undefined4 *)(puVar16 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" * (cast_expression "(undefined4 *)(puVar16 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;" statement_identifier : (if_statement "if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;" if (parenthesized_expression "(*(int *)(puVar16 + 0x1c) != 0)" ( (binary_expression "*(int *)(puVar16 + 0x1c) != 0" (pointer_expression "*(int *)(puVar16 + 0x1c)" * (cast_expression "(int *)(puVar16 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto joined_r0x0003a020;" goto statement_identifier ;))) (goto_statement "goto LAB_00039e5f;" goto statement_identifier ;) })) (expression_statement "iVar13 = *(int *)(param_1 + 0xb0);" (assignment_expression "iVar13 = *(int *)(param_1 + 0xb0)" identifier = (pointer_expression "*(int *)(param_1 + 0xb0)" * (cast_expression "(int *)(param_1 + 0xb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = *(int *)(param_1 + 0xac);" (assignment_expression "iVar10 = *(int *)(param_1 + 0xac)" identifier = (pointer_expression "*(int *)(param_1 + 0xac)" * (cast_expression "(int *)(param_1 + 0xac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x58) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + 0x58) = 0" (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" * (cast_expression "(undefined4 *)(puVar16 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }" if (parenthesized_expression "(iVar13 == 0 && iVar10 == 0)" ( (binary_expression "iVar13 == 0 && iVar10 == 0" (binary_expression "iVar13 == 0" identifier == number_literal) && (binary_expression "iVar10 == 0" identifier == number_literal)) )) (compound_statement "{\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }" { (if_statement "if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)" ( (binary_expression "*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0" (binary_expression "*(int *)(param_1 + 0xb8) == 0" (pointer_expression "*(int *)(param_1 + 0xb8)" * (cast_expression "(int *)(param_1 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb8)" ( (binary_expression "param_1 + 0xb8" identifier + number_literal) )))) == number_literal) && (binary_expression "*(int *)(param_1 + 0xb4) == 0" (pointer_expression "*(int *)(param_1 + 0xb4)" * (cast_expression "(int *)(param_1 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb4)" ( (binary_expression "param_1 + 0xb4" identifier + number_literal) )))) == number_literal)) )) (compound_statement "{\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }" { (labeled_statement "LAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;" statement_identifier : (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 7;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 7" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39fa6;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39fa6" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001c710();" (call_expression "FUN_0001c710()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }" if (parenthesized_expression "(*(int *)(param_1 + 0x110) != 0)" ( (binary_expression "*(int *)(param_1 + 0x110) != 0" (pointer_expression "*(int *)(param_1 + 0x110)" * (cast_expression "(int *)(param_1 + 0x110)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }" { (expression_statement "*(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;" (assignment_expression "*(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48" (pointer_expression "*(undefined1 **)(puVar16 + -0x10)" * (cast_expression "(undefined1 **)(puVar16 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x48" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39fc4;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39fc4" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001ab40();" (call_expression "FUN_0001ab40()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (undefined4 *)(puVar16 + 0x44);" (assignment_expression "puVar4 = (undefined4 *)(puVar16 + 0x44)" identifier = (cast_expression "(undefined4 *)(puVar16 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x44)" ( (binary_expression "puVar16 + 0x44" identifier + number_literal) )))) ;) (expression_statement "uVar9 = *(undefined4 *)(puVar16 + 0x48);" (assignment_expression "uVar9 = *(undefined4 *)(puVar16 + 0x48)" identifier = (pointer_expression "*(undefined4 *)(puVar16 + 0x48)" * (cast_expression "(undefined4 *)(puVar16 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x48)" ( (binary_expression "puVar16 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = *(int *)(puVar16 + 0x20);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x20)" identifier = (pointer_expression "*(int *)(puVar16 + 0x20)" * (cast_expression "(int *)(puVar16 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "puVar16 = puVar16 + -4;" (assignment_expression "puVar16 = puVar16 + -4" identifier = (binary_expression "puVar16 + -4" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x74) = *puVar4;" (assignment_expression "*(undefined4 *)(iVar13 + 0x74) = *puVar4" (pointer_expression "*(undefined4 *)(iVar13 + 0x74)" * (cast_expression "(undefined4 *)(iVar13 + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x74)" ( (binary_expression "iVar13 + 0x74" identifier + number_literal) )))) = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x78) = uVar9;" (assignment_expression "*(undefined4 *)(iVar13 + 0x78) = uVar9" (pointer_expression "*(undefined4 *)(iVar13 + 0x78)" * (cast_expression "(undefined4 *)(iVar13 + 0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x78)" ( (binary_expression "iVar13 + 0x78" identifier + number_literal) )))) = identifier) ;) })) })) (labeled_statement "LAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);" statement_identifier : (expression_statement "iVar13 = *(int *)(puVar16 + 0x58);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x58)" identifier = (pointer_expression "*(int *)(puVar16 + 0x58)" * (cast_expression "(int *)(puVar16 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;)) (if_statement "if (iVar13 == 0) goto LAB_00039f28;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00039f28;" goto statement_identifier ;)) (if_statement "if (iVar13 < 1) goto LAB_0003a030;" if (parenthesized_expression "(iVar13 < 1)" ( (binary_expression "iVar13 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0003a030;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)(puVar16 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + 0x10) = 0" (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" * (cast_expression "(undefined4 *)(puVar16 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }" else (compound_statement "{\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }" { (labeled_statement "LAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }" statement_identifier : (if_statement "if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0x120) != 0)" ( (binary_expression "*(int *)(param_1 + 0x120) != 0" (pointer_expression "*(int *)(param_1 + 0x120)" * (cast_expression "(int *)(param_1 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }" { (labeled_statement "LAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;" statement_identifier : (expression_statement "uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;" (assignment_expression "uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe" identifier = (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal)) ;)) (expression_statement "*(uint *)(param_1 + 300) = uVar14;" (assignment_expression "*(uint *)(param_1 + 300) = uVar14" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0003a00e;" goto statement_identifier ;) }))) (expression_statement "*(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);" (assignment_expression "*(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20)" (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" * (cast_expression "(undefined4 *)(puVar16 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x20)" * (cast_expression "(undefined4 *)(puVar16 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) }))) (expression_statement "*(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;" (assignment_expression "*(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0" (pointer_expression "*(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13)" * (cast_expression "(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x124) + iVar13)" ( (binary_expression "*(int *)(param_1 + 0x124) + iVar13" (pointer_expression "*(int *)(param_1 + 0x124)" * (cast_expression "(int *)(param_1 + 0x124)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x124)" ( (binary_expression "param_1 + 0x124" identifier + number_literal) )))) + identifier) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);" (assignment_expression "*(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124)" (pointer_expression "*(undefined4 *)(param_1 + 0xe8)" * (cast_expression "(undefined4 *)(param_1 + 0xe8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x124)" * (cast_expression "(undefined4 *)(param_1 + 0x124)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x124)" ( (binary_expression "param_1 + 0x124" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);" (assignment_expression "pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34)" identifier = (pointer_expression "*(code **)(unaff_retaddr[0x9f] + 0x34)" * (cast_expression "(code **)(unaff_retaddr[0x9f] + 0x34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_retaddr[0x9f] + 0x34)" ( (binary_expression "unaff_retaddr[0x9f] + 0x34" (subscript_expression "unaff_retaddr[0x9f]" identifier [ number_literal ]) + number_literal) ))))) ;) (if_statement "if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }" if (parenthesized_expression "(pcVar3 != (code *)0x0)" ( (binary_expression "pcVar3 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }" { (expression_statement "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;" (assignment_expression "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x56" (pointer_expression "*(undefined1 **)(puVar16 + -4)" * (cast_expression "(undefined1 **)(puVar16 + -4)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x56" identifier + number_literal)) ;) (expression_statement "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + -8)" * (cast_expression "(undefined1 **)(puVar16 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x58" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar16 + -0xc) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0xc) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0xc)" * (cast_expression "(int **)(puVar16 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39a36;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39a36" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = (*pcVar3)();" (assignment_expression "iVar13 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }" { (if_statement "if (puVar16[0x56] == '\0') goto LAB_00039a4c;" if (parenthesized_expression "(puVar16[0x56] == '\0')" ( (binary_expression "puVar16[0x56] == '\0'" (subscript_expression "puVar16[0x56]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00039a4c;" goto statement_identifier ;)) (labeled_statement "LAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);" statement_identifier : (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" identifier = (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ;)) (goto_statement "goto LAB_0003a00e;" goto statement_identifier ;) })) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (labeled_statement "LAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }" statement_identifier : (if_statement "if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }" if (parenthesized_expression "(*(char *)(param_1 + 0xd4) != '\0')" ( (binary_expression "*(char *)(param_1 + 0xd4) != '\0'" (pointer_expression "*(char *)(param_1 + 0xd4)" * (cast_expression "(char *)(param_1 + 0xd4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd4)" ( (binary_expression "param_1 + 0xd4" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }" { (expression_statement "puVar16[0x57] = 0;" (assignment_expression "puVar16[0x57] = 0" (subscript_expression "puVar16[0x57]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;" (assignment_expression "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x57" (pointer_expression "*(undefined1 **)(puVar16 + -4)" * (cast_expression "(undefined1 **)(puVar16 + -4)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x57" identifier + number_literal)) ;) (expression_statement "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + -8)" * (cast_expression "(undefined1 **)(puVar16 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x58" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar16 + -0xc) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0xc) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0xc)" * (cast_expression "(int **)(puVar16 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39da6;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39da6" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00025650();" (assignment_expression "iVar13 = FUN_00025650()" identifier = (call_expression "FUN_00025650()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (expression_statement "pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);" (assignment_expression "pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34)" identifier = (pointer_expression "*(code **)(unaff_retaddr[0x9f] + 0x34)" * (cast_expression "(code **)(unaff_retaddr[0x9f] + 0x34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_retaddr[0x9f] + 0x34)" ( (binary_expression "unaff_retaddr[0x9f] + 0x34" (subscript_expression "unaff_retaddr[0x9f]" identifier [ number_literal ]) + number_literal) ))))) ;) (if_statement "if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }" if (parenthesized_expression "(((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58)))" ( (binary_expression "((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))" (parenthesized_expression "((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4)))" ( (binary_expression "(pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))" (parenthesized_expression "(pcVar3 != (code *)0x0)" ( (binary_expression "pcVar3 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))" ( (binary_expression "(int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4)" (cast_expression "(int)(uint)(*(int *)(param_1 + 0xa0) != 0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(*(int *)(param_1 + 0xa0) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(param_1 + 0xa0) != 0)" ( (binary_expression "*(int *)(param_1 + 0xa0) != 0" (pointer_expression "*(int *)(param_1 + 0xa0)" * (cast_expression "(int *)(param_1 + 0xa0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) )))) != number_literal) )))) <= (unary_expression "-*(int *)(param_1 + 0xa4)" - (pointer_expression "*(int *)(param_1 + 0xa4)" * (cast_expression "(int *)(param_1 + 0xa4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa4)" ( (binary_expression "param_1 + 0xa4" identifier + number_literal) )))))) ))) )) && (parenthesized_expression "(0 < *(int *)(puVar16 + 0x58))" ( (binary_expression "0 < *(int *)(puVar16 + 0x58)" number_literal < (pointer_expression "*(int *)(puVar16 + 0x58)" * (cast_expression "(int *)(puVar16 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ))) )) (compound_statement "{\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }" { (expression_statement "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;" (assignment_expression "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x56" (pointer_expression "*(undefined1 **)(puVar16 + -4)" * (cast_expression "(undefined1 **)(puVar16 + -4)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x56" identifier + number_literal)) ;) (expression_statement "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + -8)" * (cast_expression "(undefined1 **)(puVar16 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x58" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar16 + -0xc) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0xc) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0xc)" * (cast_expression "(int **)(puVar16 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a21e;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a21e" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = (*pcVar3)();" (assignment_expression "iVar13 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (if_statement "if (puVar16[0x56] != '\0') goto LAB_0003a008;" if (parenthesized_expression "(puVar16[0x56] != '\0')" ( (binary_expression "puVar16[0x56] != '\0'" (subscript_expression "puVar16[0x56]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0003a008;" goto statement_identifier ;)) })) (if_statement "if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }" if (parenthesized_expression "(puVar16[0x57] == '\0')" ( (binary_expression "puVar16[0x57] == '\0'" (subscript_expression "puVar16[0x57]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }" { (if_statement "if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;" if (parenthesized_expression "((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))" ( (binary_expression "(*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0')" (parenthesized_expression "(*(int *)(param_1 + 0xe8) != 0)" ( (binary_expression "*(int *)(param_1 + 0xe8) != 0" (pointer_expression "*(int *)(param_1 + 0xe8)" * (cast_expression "(int *)(param_1 + 0xe8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(*(char *)(param_1 + 0xd4) == '\0')" ( (binary_expression "*(char *)(param_1 + 0xd4) == '\0'" (pointer_expression "*(char *)(param_1 + 0xd4)" * (cast_expression "(char *)(param_1 + 0xd4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd4)" ( (binary_expression "param_1 + 0xd4" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_00039a67;" goto statement_identifier ;)) (goto_statement "goto LAB_00039df2;" goto statement_identifier ;) })) (if_statement "if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }" if (parenthesized_expression "(0 < *(int *)(puVar16 + 0x58))" ( (binary_expression "0 < *(int *)(puVar16 + 0x58)" number_literal < (pointer_expression "*(int *)(puVar16 + 0x58)" * (cast_expression "(int *)(puVar16 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) )) (compound_statement "{\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }" { (expression_statement "iVar13 = *unaff_retaddr;" (assignment_expression "iVar13 = *unaff_retaddr" identifier = (pointer_expression "*unaff_retaddr" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar13 + 0x84)" * (cast_expression "(undefined4 *)(iVar13 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x84)" ( (binary_expression "iVar13 + 0x84" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3aaa1" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar7 = FUN_00042890();" (assignment_expression "cVar7 = FUN_00042890()" identifier = (call_expression "FUN_00042890()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }" if (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }" { (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" * (cast_expression "(undefined4 *)(puVar16 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xf0c)" * (cast_expression "(undefined4 *)(param_1 + 0xf0c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf0c)" ( (binary_expression "param_1 + 0xf0c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" * (cast_expression "(undefined4 *)(puVar16 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;" (assignment_expression "*(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX" (pointer_expression "*(undefined **)(puVar16 + -0xc)" * (cast_expression "(undefined **)(puVar16 + -0xc)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "&UNK_00047352 + unaff_EBX" (pointer_expression "&UNK_00047352" & identifier) + identifier)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3acf0;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3acf0" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }" else (compound_statement "{\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }" { (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" * (cast_expression "(undefined4 *)(puVar16 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xf0c)" * (cast_expression "(undefined4 *)(param_1 + 0xf0c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf0c)" ( (binary_expression "param_1 + 0xf0c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" * (cast_expression "(undefined4 *)(puVar16 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;" (assignment_expression "*(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX" (pointer_expression "*(undefined **)(puVar16 + -0xc)" * (cast_expression "(undefined **)(puVar16 + -0xc)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "&UNK_00047312 + unaff_EBX" (pointer_expression "&UNK_00047312" & identifier) + identifier)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3aac3;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3aac3" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar13 = *(int *)(puVar16 + 0x58);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x58)" identifier = (pointer_expression "*(int *)(puVar16 + 0x58)" * (cast_expression "(int *)(puVar16 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)unaff_retaddr + 0x261) = 1;" (assignment_expression "*(undefined1 *)((int)unaff_retaddr + 0x261) = 1" (pointer_expression "*(undefined1 *)((int)unaff_retaddr + 0x261)" * (cast_expression "(undefined1 *)((int)unaff_retaddr + 0x261)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_retaddr + 0x261)" ( (binary_expression "(int)unaff_retaddr + 0x261" (cast_expression "(int)unaff_retaddr" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;" (assignment_expression "unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13" (subscript_expression "unaff_retaddr[0xcc]" identifier [ number_literal ]) = (binary_expression "unaff_retaddr[0xcc] - iVar13" (subscript_expression "unaff_retaddr[0xcc]" identifier [ number_literal ]) - identifier)) ;) }))) })) (goto_statement "goto LAB_0003a008;" goto statement_identifier ;) }))) (if_statement "if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0xe8) == 0)" ( (binary_expression "*(int *)(param_1 + 0xe8) == 0" (pointer_expression "*(int *)(param_1 + 0xe8)" * (cast_expression "(int *)(param_1 + 0xe8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }" { (labeled_statement "LAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];" statement_identifier : (expression_statement "iVar13 = unaff_retaddr[0x9f];" (assignment_expression "iVar13 = unaff_retaddr[0x9f]" identifier = (subscript_expression "unaff_retaddr[0x9f]" identifier [ number_literal ])) ;)) (labeled_statement "LAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);" statement_identifier : (expression_statement "iVar10 = *(int *)(iVar13 + 0x34);" (assignment_expression "iVar10 = *(int *)(iVar13 + 0x34)" identifier = (pointer_expression "*(int *)(iVar13 + 0x34)" * (cast_expression "(int *)(iVar13 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x34)" ( (binary_expression "iVar13 + 0x34" identifier + number_literal) ))))) ;)) (if_statement "if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }" { (labeled_statement "LAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }" statement_identifier : (if_statement "if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }" if (parenthesized_expression "((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0'))" ( (binary_expression "(*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')" (parenthesized_expression "(*(int *)(puVar16 + 0x3c) != 0)" ( (binary_expression "*(int *)(puVar16 + 0x3c) != 0" (pointer_expression "*(int *)(puVar16 + 0x3c)" * (cast_expression "(int *)(puVar16 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(*(char *)((int)unaff_retaddr + 0x261) == '\0')" ( (binary_expression "*(char *)((int)unaff_retaddr + 0x261) == '\0'" (pointer_expression "*(char *)((int)unaff_retaddr + 0x261)" * (cast_expression "(char *)((int)unaff_retaddr + 0x261)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_retaddr + 0x261)" ( (binary_expression "(int)unaff_retaddr + 0x261" (cast_expression "(int)unaff_retaddr" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }" { (expression_statement "iVar13 = *(int *)(param_1 + 0x8f8);" (assignment_expression "iVar13 = *(int *)(param_1 + 0x8f8)" identifier = (pointer_expression "*(int *)(param_1 + 0x8f8)" * (cast_expression "(int *)(param_1 + 0x8f8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x8f8)" ( (binary_expression "param_1 + 0x8f8" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = *(int *)(puVar16 + 0x3c);" (assignment_expression "iVar11 = *(int *)(puVar16 + 0x3c)" identifier = (pointer_expression "*(int *)(puVar16 + 0x3c)" * (cast_expression "(int *)(puVar16 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + 0x10) = iVar10;" (assignment_expression "*(int *)(puVar16 + 0x10) = iVar10" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar14 = iVar13 + *(int *)(param_1 + 0x124);" (assignment_expression "uVar14 = iVar13 + *(int *)(param_1 + 0x124)" identifier = (binary_expression "iVar13 + *(int *)(param_1 + 0x124)" identifier + (pointer_expression "*(int *)(param_1 + 0x124)" * (cast_expression "(int *)(param_1 + 0x124)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x124)" ( (binary_expression "param_1 + 0x124" identifier + number_literal) )))))) ;) (expression_statement "iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);" (assignment_expression "iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8)" identifier = (binary_expression "*(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8)" (pointer_expression "*(int *)(puVar16 + 0x58)" * (cast_expression "(int *)(puVar16 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0xe8)" * (cast_expression "(int *)(param_1 + 0xe8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) )))))) ;) (expression_statement "*(int *)(param_1 + 0xe8) = iVar10;" (assignment_expression "*(int *)(param_1 + 0xe8) = iVar10" (pointer_expression "*(int *)(param_1 + 0xe8)" * (cast_expression "(int *)(param_1 + 0xe8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar13 = uVar14 - iVar10;" (assignment_expression "iVar13 = uVar14 - iVar10" identifier = (binary_expression "uVar14 - iVar10" identifier - identifier)) ;) (if_statement "if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }" if (parenthesized_expression "((uint)(iVar11 + iVar10) <= uVar14)" ( (binary_expression "(uint)(iVar11 + iVar10) <= uVar14" (call_expression "(uint)(iVar11 + iVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar11 + iVar10)" ( (binary_expression "iVar11 + iVar10" identifier + identifier) ))) <= identifier) )) (compound_statement "{\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }" { (expression_statement "iVar13 = *(int *)(puVar16 + 0x3c);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x3c)" identifier = (pointer_expression "*(int *)(puVar16 + 0x3c)" * (cast_expression "(int *)(puVar16 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) ))))) ;) })) (expression_statement "*(int *)(puVar16 + 0x58) = iVar13;" (assignment_expression "*(int *)(puVar16 + 0x58) = iVar13" (pointer_expression "*(int *)(puVar16 + 0x58)" * (cast_expression "(int *)(puVar16 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;" (assignment_expression "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x56" (pointer_expression "*(undefined1 **)(puVar16 + -4)" * (cast_expression "(undefined1 **)(puVar16 + -4)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x56" identifier + number_literal)) ;) (expression_statement "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + -8)" * (cast_expression "(undefined1 **)(puVar16 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x58" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar16 + -0xc) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0xc) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0xc)" * (cast_expression "(int **)(puVar16 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3aa4b" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = (**(code **)(puVar16 + 0x10))();" (assignment_expression "iVar13 = (**(code **)(puVar16 + 0x10))()" identifier = (call_expression "(**(code **)(puVar16 + 0x10))()" (parenthesized_expression "(**(code **)(puVar16 + 0x10))" ( (pointer_expression "**(code **)(puVar16 + 0x10)" * (pointer_expression "*(code **)(puVar16 + 0x10)" * (cast_expression "(code **)(puVar16 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }" { (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" identifier = (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ;) (if_statement "if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }" if (parenthesized_expression "(puVar16[0x56] != '\0')" ( (binary_expression "puVar16[0x56] != '\0'" (subscript_expression "puVar16[0x56]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }" { (expression_statement "uVar14 = uVar14 | 1;" (assignment_expression "uVar14 = uVar14 | 1" identifier = (binary_expression "uVar14 | 1" identifier | number_literal)) ;) (expression_statement "*(uint *)(param_1 + 300) = uVar14;" (assignment_expression "*(uint *)(param_1 + 300) = uVar14" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = identifier) ;) })) (goto_statement "goto LAB_0003a00e;" goto statement_identifier ;) })) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) }))) })) (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" identifier = (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }" if (parenthesized_expression "(*(int *)(puVar16 + 0x10) != 0)" ( (binary_expression "*(int *)(puVar16 + 0x10) != 0" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }" { (expression_statement "uVar14 = uVar14 & 0xfffffffe;" (assignment_expression "uVar14 = uVar14 & 0xfffffffe" identifier = (binary_expression "uVar14 & 0xfffffffe" identifier & number_literal)) ;) (expression_statement "*(uint *)(param_1 + 300) = uVar14;" (assignment_expression "*(uint *)(param_1 + 300) = uVar14" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = identifier) ;) })) }) (else_clause "else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }" else (compound_statement "{\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }" { (labeled_statement "LAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }" statement_identifier : (if_statement "if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }" if (parenthesized_expression "((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0))" ( (binary_expression "(0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)" (parenthesized_expression "(0 < *(int *)(puVar16 + 0x58))" ( (binary_expression "0 < *(int *)(puVar16 + 0x58)" number_literal < (pointer_expression "*(int *)(puVar16 + 0x58)" * (cast_expression "(int *)(puVar16 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) )) || (parenthesized_expression "((puVar16[0x10] & 1) != 0)" ( (binary_expression "(puVar16[0x10] & 1) != 0" (parenthesized_expression "(puVar16[0x10] & 1)" ( (binary_expression "puVar16[0x10] & 1" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }" { (if_statement "if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }" if (parenthesized_expression "(*(char *)(param_1 + 0x934) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x934) != '\0'" (pointer_expression "*(char *)(param_1 + 0x934)" * (cast_expression "(char *)(param_1 + 0x934)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x934)" ( (binary_expression "param_1 + 0x934" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }" { (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 2;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 2" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar13 = 8;" (assignment_expression "iVar13 = 8" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ab68;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ab68" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000414c0();" (call_expression "FUN_000414c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "**(undefined1 **)(puVar16 + 0x38) = 1;" (assignment_expression "**(undefined1 **)(puVar16 + 0x38) = 1" (pointer_expression "**(undefined1 **)(puVar16 + 0x38)" * (pointer_expression "*(undefined1 **)(puVar16 + 0x38)" * (cast_expression "(undefined1 **)(puVar16 + 0x38)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x38)" ( (binary_expression "puVar16 + 0x38" identifier + number_literal) ))))) = number_literal) ;) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (expression_statement "iVar13 = *(int *)(param_1 + 0x120);" (assignment_expression "iVar13 = *(int *)(param_1 + 0x120)" identifier = (pointer_expression "*(int *)(param_1 + 0x120)" * (cast_expression "(int *)(param_1 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }" if (parenthesized_expression "(*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0)" ( (binary_expression "*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0" (binary_expression "*(int *)(puVar16 + 0x10) == 0" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) == number_literal) && (binary_expression "iVar13 == 0" identifier == number_literal)) )) (compound_statement "{\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }" { (if_statement "if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }" if (parenthesized_expression "((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0)" ( (binary_expression "(*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0" (parenthesized_expression "(*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003)" ( (binary_expression "*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003" (pointer_expression "*(uint *)(unaff_retaddr[0x9f] + 0x40)" * (cast_expression "(uint *)(unaff_retaddr[0x9f] + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr[0x9f] + 0x40)" ( (binary_expression "unaff_retaddr[0x9f] + 0x40" (subscript_expression "unaff_retaddr[0x9f]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n              iVar13 = 0;\n            }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) }) (else_clause "else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }" else (compound_statement "{\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }" { (if_statement "if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }" if (parenthesized_expression "(*(int *)(param_1 + 0x138) != 0)" ( (binary_expression "*(int *)(param_1 + 0x138) != 0" (pointer_expression "*(int *)(param_1 + 0x138)" * (cast_expression "(int *)(param_1 + 0x138)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x138)" ( (binary_expression "param_1 + 0x138" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }" { (if_statement "if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }" if (parenthesized_expression "(*(char *)((int)unaff_retaddr + 0x249) != '\0')" ( (binary_expression "*(char *)((int)unaff_retaddr + 0x249) != '\0'" (pointer_expression "*(char *)((int)unaff_retaddr + 0x249)" * (cast_expression "(char *)((int)unaff_retaddr + 0x249)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_retaddr + 0x249)" ( (binary_expression "(int)unaff_retaddr + 0x249" (cast_expression "(int)unaff_retaddr" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }" { (expression_statement "puVar17 = *(undefined1 **)(puVar16 + 0x38);" (assignment_expression "puVar17 = *(undefined1 **)(puVar16 + 0x38)" identifier = (pointer_expression "*(undefined1 **)(puVar16 + 0x38)" * (cast_expression "(undefined1 **)(puVar16 + 0x38)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x38)" ( (binary_expression "puVar16 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "*puVar17 = 1;" (assignment_expression "*puVar17 = 1" (pointer_expression "*puVar17" * identifier) = number_literal) ;) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (expression_statement "*(undefined1 *)(param_1 + 0x131) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x131) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x131)" * (cast_expression "(undefined1 *)(param_1 + 0x131)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x131)" ( (binary_expression "param_1 + 0x131" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "unaff_EBX + 0x47062" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a521;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a521" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar13 = *(int *)(param_1 + 0xeb8);" (assignment_expression "iVar13 = *(int *)(param_1 + 0xeb8)" identifier = (pointer_expression "*(int *)(param_1 + 0xeb8)" * (cast_expression "(int *)(param_1 + 0xeb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xeb8)" ( (binary_expression "param_1 + 0xeb8" identifier + number_literal) ))))) ;) (if_statement "if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }" if (parenthesized_expression "((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0'))" ( (binary_expression "(((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')" (parenthesized_expression "(((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1))" ( (binary_expression "((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)" (parenthesized_expression "((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0'))" ( (binary_expression "(*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')" (parenthesized_expression "(*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0)" ( (binary_expression "*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0" (binary_expression "*(int *)(param_1 + 0xebc) != 0" (pointer_expression "*(int *)(param_1 + 0xebc)" * (cast_expression "(int *)(param_1 + 0xebc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xebc)" ( (binary_expression "param_1 + 0xebc" identifier + number_literal) )))) != number_literal) || (binary_expression "iVar13 != 0" identifier != number_literal)) )) && (parenthesized_expression "(*(char *)(param_1 + 0xf8) == '\0')" ( (binary_expression "*(char *)(param_1 + 0xf8) == '\0'" (pointer_expression "*(char *)(param_1 + 0xf8)" * (cast_expression "(char *)(param_1 + 0xf8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(*(int *)(param_1 + 0x818) == 1)" ( (binary_expression "*(int *)(param_1 + 0x818) == 1" (pointer_expression "*(int *)(param_1 + 0x818)" * (cast_expression "(int *)(param_1 + 0x818)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x818)" ( (binary_expression "param_1 + 0x818" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(*(char *)(param_1 + 0x131) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x131) == '\0'" (pointer_expression "*(char *)(param_1 + 0x131)" * (cast_expression "(char *)(param_1 + 0x131)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x131)" ( (binary_expression "param_1 + 0x131" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }" { (if_statement "if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }" if (parenthesized_expression "((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94)))" ( (binary_expression "(*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))" (parenthesized_expression "(*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98))" ( (binary_expression "*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)" (pointer_expression "*(int *)(param_1 + 0xebc)" * (cast_expression "(int *)(param_1 + 0xebc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xebc)" ( (binary_expression "param_1 + 0xebc" identifier + number_literal) )))) == (pointer_expression "*(int *)(param_1 + 0x98)" * (cast_expression "(int *)(param_1 + 0x98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) )) && (parenthesized_expression "(iVar13 == *(int *)(param_1 + 0x94))" ( (binary_expression "iVar13 == *(int *)(param_1 + 0x94)" identifier == (pointer_expression "*(int *)(param_1 + 0x94)" * (cast_expression "(int *)(param_1 + 0x94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) ))))) ))) )) (compound_statement "{\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }" { (expression_statement "*(int *)(puVar16 + -4) = iVar13;" (assignment_expression "*(int *)(puVar16 + -4) = iVar13" (pointer_expression "*(int *)(puVar16 + -4)" * (cast_expression "(int *)(puVar16 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -8) = iVar13;" (assignment_expression "*(int *)(puVar16 + -8) = iVar13" (pointer_expression "*(int *)(puVar16 + -8)" * (cast_expression "(int *)(puVar16 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "unaff_EBX + 0x473a2" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ad9a" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ada6;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ada6" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000414c0();" (call_expression "FUN_000414c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar17 = *(undefined1 **)(puVar16 + 0x38);" (assignment_expression "puVar17 = *(undefined1 **)(puVar16 + 0x38)" identifier = (pointer_expression "*(undefined1 **)(puVar16 + 0x38)" * (cast_expression "(undefined1 **)(puVar16 + 0x38)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x38)" ( (binary_expression "puVar16 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "*puVar17 = 1;" (assignment_expression "*puVar17 = 1" (pointer_expression "*puVar17" * identifier) = number_literal) ;) }) (else_clause "else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }" else (compound_statement "{\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }" { (expression_statement "*(int **)(puVar16 + -4) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -4) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -4)" * (cast_expression "(int **)(puVar16 + -4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -8) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -8) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -8)" * (cast_expression "(int **)(puVar16 + -8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar13 = 0x21;" (assignment_expression "iVar13 = 0x21" identifier = number_literal) ;) (expression_statement "*(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;" (assignment_expression "*(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX" (pointer_expression "*(undefined **)(puVar16 + -0xc)" * (cast_expression "(undefined **)(puVar16 + -0xc)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "&UNK_000473ce + unaff_EBX" (pointer_expression "&UNK_000473ce" & identifier) + identifier)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a571;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a571" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027240();" (call_expression "FUN_00027240()" identifier (argument_list "()" ( ))) ;) }))) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (if_statement "if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }" if (parenthesized_expression "((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0))" ( (binary_expression "(*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)" (parenthesized_expression "(*(int *)(param_1 + 0x810) != 0)" ( (binary_expression "*(int *)(param_1 + 0x810) != 0" (pointer_expression "*(int *)(param_1 + 0x810)" * (cast_expression "(int *)(param_1 + 0x810)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x810)" ( (binary_expression "param_1 + 0x810" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(*(int *)(param_1 + 0xeb4) == 0)" ( (binary_expression "*(int *)(param_1 + 0xeb4) == 0" (pointer_expression "*(int *)(param_1 + 0xeb4)" * (cast_expression "(int *)(param_1 + 0xeb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xeb4)" ( (binary_expression "param_1 + 0xeb4" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }" { (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x11c)" * (cast_expression "(undefined4 *)(param_1 + 0x11c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x11c)" ( (binary_expression "param_1 + 0x11c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a5a3" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar7 = FUN_000397f0();" (assignment_expression "cVar7 = FUN_000397f0()" identifier = (call_expression "FUN_000397f0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }" if (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }" { (expression_statement "**(undefined1 **)(puVar16 + 0x38) = 1;" (assignment_expression "**(undefined1 **)(puVar16 + 0x38) = 1" (pointer_expression "**(undefined1 **)(puVar16 + 0x38)" * (pointer_expression "*(undefined1 **)(puVar16 + 0x38)" * (cast_expression "(undefined1 **)(puVar16 + 0x38)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x38)" ( (binary_expression "puVar16 + 0x38" identifier + number_literal) ))))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0xf48) = 0x130;" (assignment_expression "*(undefined4 *)(param_1 + 0xf48) = 0x130" (pointer_expression "*(undefined4 *)(param_1 + 0xf48)" * (cast_expression "(undefined4 *)(param_1 + 0xf48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf48)" ( (binary_expression "param_1 + 0xf48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int **)(puVar16 + -4) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -4) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -4)" * (cast_expression "(int **)(puVar16 + -4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -8) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -8) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -8)" * (cast_expression "(int **)(puVar16 + -8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;" (assignment_expression "*(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX" (pointer_expression "*(undefined **)(puVar16 + -0xc)" * (cast_expression "(undefined **)(puVar16 + -0xc)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "&UNK_0004740e + unaff_EBX" (pointer_expression "&UNK_0004740e" & identifier) + identifier)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a5cc" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a5d6" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000414c0();" (call_expression "FUN_000414c0()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00039e7c;" goto statement_identifier ;) })) })) (expression_statement "iVar13 = *(int *)(param_1 + 0x120);" (assignment_expression "iVar13 = *(int *)(param_1 + 0x120)" identifier = (pointer_expression "*(int *)(param_1 + 0x120)" * (cast_expression "(int *)(param_1 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) ))))) ;) }))) })) (expression_statement "*(int *)(param_1 + 0x120) = iVar13 + 1;" (assignment_expression "*(int *)(param_1 + 0x120) = iVar13 + 1" (pointer_expression "*(int *)(param_1 + 0x120)" * (cast_expression "(int *)(param_1 + 0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) )))) = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (if_statement "if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }" if (parenthesized_expression "(*(char *)(param_1 + 0x93c) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x93c) == '\0'" (pointer_expression "*(char *)(param_1 + 0x93c)" * (cast_expression "(char *)(param_1 + 0x93c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x93c)" ( (binary_expression "param_1 + 0x93c" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }" { (labeled_statement "LAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }" statement_identifier : (if_statement "if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }" if (parenthesized_expression "(*(char *)(param_1 + 0x144) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x144) != '\0'" (pointer_expression "*(char *)(param_1 + 0x144)" * (cast_expression "(char *)(param_1 + 0x144)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x144)" ( (binary_expression "param_1 + 0x144" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }" { (labeled_statement "LAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;" statement_identifier : (expression_statement "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + -4)" * (cast_expression "(undefined1 **)(puVar16 + -4)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x58" identifier + number_literal)) ;)) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" * (cast_expression "(undefined4 *)(puVar16 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xe8)" * (cast_expression "(undefined4 *)(param_1 + 0xe8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a295;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a295" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar10 = FUN_0003f2e0();" (assignment_expression "iVar10 = FUN_0003f2e0()" identifier = (call_expression "FUN_0003f2e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }" if (parenthesized_expression "(0 < iVar10)" ( (binary_expression "0 < iVar10" number_literal < identifier) )) (compound_statement "{\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }" { (if_statement "if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }" if (parenthesized_expression "(iVar10 == 4)" ( (binary_expression "iVar10 == 4" identifier == number_literal) )) (compound_statement "{\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }" { (expression_statement "iVar13 = 0x17;" (assignment_expression "iVar13 = 0x17" identifier = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "unaff_EBX + 0x4707e" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ad5d" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027240();" (call_expression "FUN_00027240()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }" else (compound_statement "{\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }" { (expression_statement "iVar13 = 0x38;" (assignment_expression "iVar13 = 0x38" identifier = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0x10) = iVar10;" (assignment_expression "*(int *)(puVar16 + -0x10) = iVar10" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ac90;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ac90" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar9 = FUN_0003f850();" (assignment_expression "uVar9 = FUN_0003f850()" identifier = (call_expression "FUN_0003f850()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "unaff_EBX + 0x47092" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3aca1;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3aca1" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027240();" (call_expression "FUN_00027240()" identifier (argument_list "()" ( ))) ;) }))) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (if_statement "if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }" if (parenthesized_expression "(iVar10 == -1)" ( (binary_expression "iVar10 == -1" identifier == number_literal) )) (compound_statement "{\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }" { (expression_statement "iVar13 = unaff_retaddr[0xd];" (assignment_expression "iVar13 = unaff_retaddr[0xd]" identifier = (subscript_expression "unaff_retaddr[0xd]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }" { (expression_statement "*(int *)(puVar16 + -8) = iVar13;" (assignment_expression "*(int *)(puVar16 + -8) = iVar13" (pointer_expression "*(int *)(puVar16 + -8)" * (cast_expression "(int *)(puVar16 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;" (assignment_expression "*(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX" (pointer_expression "*(undefined **)(puVar16 + -0xc)" * (cast_expression "(undefined **)(puVar16 + -0xc)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "&UNK_0004742e + unaff_EBX" (pointer_expression "&UNK_0004742e" & identifier) + identifier)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = *unaff_retaddr;" (assignment_expression "*(int *)(puVar16 + -0x10) = *unaff_retaddr" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*unaff_retaddr" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a2ce" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar10 = *unaff_retaddr;" (assignment_expression "iVar10 = *unaff_retaddr" identifier = (pointer_expression "*unaff_retaddr" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar10 + 0x84)" * (cast_expression "(undefined4 *)(iVar10 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x84)" ( (binary_expression "iVar10 + 0x84" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a2e0" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar7 = FUN_00042890();" (assignment_expression "cVar7 = FUN_00042890()" identifier = (call_expression "FUN_00042890()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }" if (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }" { (expression_statement "*(int *)(puVar16 + -8) = iVar13;" (assignment_expression "*(int *)(puVar16 + -8) = iVar13" (pointer_expression "*(int *)(puVar16 + -8)" * (cast_expression "(int *)(puVar16 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "unaff_EBX + 0x470a9" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = *unaff_retaddr;" (assignment_expression "*(int *)(puVar16 + -0x10) = *unaff_retaddr" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*unaff_retaddr" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a2fe" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) (expression_statement "unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;" (assignment_expression "unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13" (subscript_expression "unaff_retaddr[0xcc]" identifier [ number_literal ]) = (binary_expression "unaff_retaddr[0xcc] - iVar13" (subscript_expression "unaff_retaddr[0xcc]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "*(undefined1 *)((int)unaff_retaddr + 0x261) = 1;" (assignment_expression "*(undefined1 *)((int)unaff_retaddr + 0x261) = 1" (pointer_expression "*(undefined1 *)((int)unaff_retaddr + 0x261)" * (cast_expression "(undefined1 *)((int)unaff_retaddr + 0x261)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_retaddr + 0x261)" ( (binary_expression "(int)unaff_retaddr + 0x261" (cast_expression "(int)unaff_retaddr" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) })) })) })) }))) (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0xb0)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" * (cast_expression "(undefined4 *)(param_1 + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = *(int *)(param_1 + 0xd8);" (assignment_expression "iVar13 = *(int *)(param_1 + 0xd8)" identifier = (pointer_expression "*(int *)(param_1 + 0xd8)" * (cast_expression "(int *)(param_1 + 0xd8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);" (assignment_expression "*(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac)" (pointer_expression "*(undefined4 *)(puVar16 + 0x28)" * (cast_expression "(undefined4 *)(puVar16 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xac)" * (cast_expression "(undefined4 *)(param_1 + 0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x2c) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + 0x2c) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + 0x2c)" * (cast_expression "(undefined4 *)(puVar16 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }" if (parenthesized_expression "((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0'))" ( (binary_expression "(iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')" (parenthesized_expression "(iVar13 == 1)" ( (binary_expression "iVar13 == 1" identifier == number_literal) )) && (parenthesized_expression "(*(char *)(param_1 + 0x131) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x131) == '\0'" (pointer_expression "*(char *)(param_1 + 0x131)" * (cast_expression "(char *)(param_1 + 0x131)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x131)" ( (binary_expression "param_1 + 0x131" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }" { (expression_statement "uVar2 = *(uint *)(param_1 + 0xe4);" (assignment_expression "uVar2 = *(uint *)(param_1 + 0xe4)" identifier = (pointer_expression "*(uint *)(param_1 + 0xe4)" * (cast_expression "(uint *)(param_1 + 0xe4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe4)" ( (binary_expression "param_1 + 0xe4" identifier + number_literal) ))))) ;) (expression_statement "puVar1 = (uint *)(puVar16 + 0x28);" (assignment_expression "puVar1 = (uint *)(puVar16 + 0x28)" identifier = (cast_expression "(uint *)(puVar16 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))) ;) (expression_statement "uVar14 = *puVar1;" (assignment_expression "uVar14 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*puVar1 = *puVar1 + uVar2;" (assignment_expression "*puVar1 = *puVar1 + uVar2" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 + uVar2" (pointer_expression "*puVar1" * identifier) + identifier)) ;) (expression_statement "*(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);" (assignment_expression "*(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2)" (pointer_expression "*(uint *)(puVar16 + 0x2c)" * (cast_expression "(uint *)(puVar16 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2)" (pointer_expression "*(int *)(puVar16 + 0x2c)" * (cast_expression "(int *)(puVar16 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) )))) + (cast_expression "(uint)CARRY4(uVar14,uVar2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar14,uVar2)" identifier (argument_list "(uVar14,uVar2)" ( identifier , identifier )))))) ;) (expression_statement "uVar9 = *(undefined4 *)(puVar16 + 0x2c);" (assignment_expression "uVar9 = *(undefined4 *)(puVar16 + 0x2c)" identifier = (pointer_expression "*(undefined4 *)(puVar16 + 0x2c)" * (cast_expression "(undefined4 *)(puVar16 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);" (assignment_expression "*(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28)" (pointer_expression "*(undefined4 *)(param_1 + 0xac)" * (cast_expression "(undefined4 *)(param_1 + 0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x28)" * (cast_expression "(undefined4 *)(puVar16 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0xb0) = uVar9;" (assignment_expression "*(undefined4 *)(param_1 + 0xb0) = uVar9" (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" * (cast_expression "(undefined4 *)(param_1 + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) )))) = identifier) ;) })) }) (else_clause "else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }" else (compound_statement "{\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }" { (if_statement "if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }" if (parenthesized_expression "(*(int *)(param_1 + 0xd8) == 0)" ( (binary_expression "*(int *)(param_1 + 0xd8) == 0" (pointer_expression "*(int *)(param_1 + 0xd8)" * (cast_expression "(int *)(param_1 + 0xd8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }" { (labeled_statement "LAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);" statement_identifier : (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" * (cast_expression "(undefined4 *)(puVar16 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" * (cast_expression "(undefined4 *)(puVar16 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;)) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xe8)" * (cast_expression "(undefined4 *)(param_1 + 0xe8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 3;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 3" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a05a;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a05a" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027090();" (call_expression "FUN_00027090()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_0003a05d;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" * (cast_expression "(undefined4 *)(puVar16 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xe4)" * (cast_expression "(undefined4 *)(param_1 + 0xe4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe4)" ( (binary_expression "param_1 + 0xe4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xc60)" * (cast_expression "(undefined4 *)(param_1 + 0xc60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc60)" ( (binary_expression "param_1 + 0xc60" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 3;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 3" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39ad1;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39ad1" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027090();" (call_expression "FUN_00027090()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;" if (parenthesized_expression "(*(int *)(param_1 + 0xd8) == 1)" ( (binary_expression "*(int *)(param_1 + 0xd8) == 1" (pointer_expression "*(int *)(param_1 + 0xd8)" * (cast_expression "(int *)(param_1 + 0xd8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0003a048;" goto statement_identifier ;)) (if_statement "if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;" if (parenthesized_expression "(*(char *)(param_1 + 0x144) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x144) != '\0'" (pointer_expression "*(char *)(param_1 + 0x144)" * (cast_expression "(char *)(param_1 + 0x144)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x144)" ( (binary_expression "param_1 + 0x144" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0003a280;" goto statement_identifier ;)) (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0xb0)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" * (cast_expression "(undefined4 *)(param_1 + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);" (assignment_expression "*(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac)" (pointer_expression "*(undefined4 *)(puVar16 + 0x28)" * (cast_expression "(undefined4 *)(puVar16 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xac)" * (cast_expression "(undefined4 *)(param_1 + 0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x2c) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + 0x2c) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + 0x2c)" * (cast_expression "(undefined4 *)(puVar16 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "uVar14 = *(uint *)(puVar16 + 0x58);" (assignment_expression "uVar14 = *(uint *)(puVar16 + 0x58)" identifier = (pointer_expression "*(uint *)(puVar16 + 0x58)" * (cast_expression "(uint *)(puVar16 + 0x58)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(uint *)(param_1 + 0xa4);" (assignment_expression "uVar2 = *(uint *)(param_1 + 0xa4)" identifier = (pointer_expression "*(uint *)(param_1 + 0xa4)" * (cast_expression "(uint *)(param_1 + 0xa4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa4)" ( (binary_expression "param_1 + 0xa4" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = *(uint *)(param_1 + 0xa0);" (assignment_expression "uVar8 = *(uint *)(param_1 + 0xa0)" identifier = (pointer_expression "*(uint *)(param_1 + 0xa0)" * (cast_expression "(uint *)(param_1 + 0xa0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar16 + 0x40) = uVar14;" (assignment_expression "*(uint *)(puVar16 + 0x40) = uVar14" (pointer_expression "*(uint *)(puVar16 + 0x40)" * (cast_expression "(uint *)(puVar16 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x40)" ( (binary_expression "puVar16 + 0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);" (assignment_expression "*(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28)" (pointer_expression "*(uint *)(puVar16 + 0x30)" * (cast_expression "(uint *)(puVar16 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x30)" ( (binary_expression "puVar16 + 0x30" identifier + number_literal) )))) = (binary_expression "uVar14 + *(uint *)(puVar16 + 0x28)" identifier + (pointer_expression "*(uint *)(puVar16 + 0x28)" * (cast_expression "(uint *)(puVar16 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))))) ;) (expression_statement "*(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));" (assignment_expression "*(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" (pointer_expression "*(uint *)(puVar16 + 0x34)" * (cast_expression "(uint *)(puVar16 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x34)" ( (binary_expression "puVar16 + 0x34" identifier + number_literal) )))) = (binary_expression "((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" (binary_expression "((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c)" (parenthesized_expression "((int)uVar14 >> 0x1f)" ( (binary_expression "(int)uVar14 >> 0x1f" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + (pointer_expression "*(int *)(puVar16 + 0x2c)" * (cast_expression "(int *)(puVar16 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) ))))) + (cast_expression "(uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" identifier (argument_list "(uVar14,*(uint *)(puVar16 + 0x28))" ( identifier , (pointer_expression "*(uint *)(puVar16 + 0x28)" * (cast_expression "(uint *)(puVar16 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))) )))))) ;) (if_statement "if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }" if (parenthesized_expression "(((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0))" ( (binary_expression "((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)" (parenthesized_expression "((uVar2 & uVar8) != 0xffffffff)" ( (binary_expression "(uVar2 & uVar8) != 0xffffffff" (parenthesized_expression "(uVar2 & uVar8)" ( (binary_expression "uVar2 & uVar8" identifier & identifier) )) != number_literal) )) && (parenthesized_expression "(iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)" ( (comma_expression "iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x34) - uVar2" identifier = (binary_expression "*(int *)(puVar16 + 0x34) - uVar2" (pointer_expression "*(int *)(puVar16 + 0x34)" * (cast_expression "(int *)(puVar16 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x34)" ( (binary_expression "puVar16 + 0x34" identifier + number_literal) )))) - identifier)) , (binary_expression "(SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0" (parenthesized_expression "(SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8)))" ( (binary_expression "SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))" (call_expression "SBORROW4(*(int *)(puVar16 + 0x34),uVar2)" identifier (argument_list "(*(int *)(puVar16 + 0x34),uVar2)" ( (pointer_expression "*(int *)(puVar16 + 0x34)" * (cast_expression "(int *)(puVar16 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x34)" ( (binary_expression "puVar16 + 0x34" identifier + number_literal) )))) , identifier ))) != (call_expression "SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))" identifier (argument_list "(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))" ( identifier , (call_expression "(uint)(*(uint *)(puVar16 + 0x30) < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(puVar16 + 0x30) < uVar8)" ( (binary_expression "*(uint *)(puVar16 + 0x30) < uVar8" (pointer_expression "*(uint *)(puVar16 + 0x30)" * (cast_expression "(uint *)(puVar16 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x30)" ( (binary_expression "puVar16 + 0x30" identifier + number_literal) )))) < identifier) ))) )))) )) == (binary_expression "(int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0" (cast_expression "(int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8))" ( (binary_expression "iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)" identifier - (call_expression "(uint)(*(uint *)(puVar16 + 0x30) < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(puVar16 + 0x30) < uVar8)" ( (binary_expression "*(uint *)(puVar16 + 0x30) < uVar8" (pointer_expression "*(uint *)(puVar16 + 0x30)" * (cast_expression "(uint *)(puVar16 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x30)" ( (binary_expression "puVar16 + 0x30" identifier + number_literal) )))) < identifier) )))) ))) < number_literal))) ))) )) (compound_statement "{\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }" { (expression_statement "iVar13 = *(int *)(puVar16 + 0x28);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x28)" identifier = (pointer_expression "*(int *)(puVar16 + 0x28)" * (cast_expression "(int *)(puVar16 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = *(int *)(puVar16 + 0x40);" (assignment_expression "iVar10 = *(int *)(puVar16 + 0x40)" identifier = (pointer_expression "*(int *)(puVar16 + 0x40)" * (cast_expression "(int *)(puVar16 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x40)" ( (binary_expression "puVar16 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar16 + 0x30) = uVar8;" (assignment_expression "*(uint *)(puVar16 + 0x30) = uVar8" (pointer_expression "*(uint *)(puVar16 + 0x30)" * (cast_expression "(uint *)(puVar16 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x30)" ( (binary_expression "puVar16 + 0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar11 = (iVar10 + iVar13) - uVar8;" (assignment_expression "iVar11 = (iVar10 + iVar13) - uVar8" identifier = (binary_expression "(iVar10 + iVar13) - uVar8" (parenthesized_expression "(iVar10 + iVar13)" ( (binary_expression "iVar10 + iVar13" identifier + identifier) )) - identifier)) ;) (expression_statement "*(int *)(puVar16 + 0x3c) = iVar11;" (assignment_expression "*(int *)(puVar16 + 0x3c) = iVar11" (pointer_expression "*(int *)(puVar16 + 0x3c)" * (cast_expression "(int *)(puVar16 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }" if (parenthesized_expression "((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0'))" ( (binary_expression "(iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')" (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(char *)(param_1 + 0x131) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x131) == '\0'" (pointer_expression "*(char *)(param_1 + 0x131)" * (cast_expression "(char *)(param_1 + 0x131)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x131)" ( (binary_expression "param_1 + 0x131" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }" { (expression_statement "iVar11 = *unaff_retaddr;" (assignment_expression "iVar11 = *unaff_retaddr" identifier = (pointer_expression "*unaff_retaddr" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar11 + 0x84)" * (cast_expression "(undefined4 *)(iVar11 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x84)" ( (binary_expression "iVar11 + 0x84" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a7f3" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar7 = FUN_00042890();" (assignment_expression "cVar7 = FUN_00042890()" identifier = (call_expression "FUN_00042890()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }" if (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }" { (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" * (cast_expression "(undefined4 *)(param_1 + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xac)" * (cast_expression "(undefined4 *)(param_1 + 0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4)" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xa4)" * (cast_expression "(undefined4 *)(param_1 + 0xa4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa4)" ( (binary_expression "param_1 + 0xa4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);" (assignment_expression "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0)" (pointer_expression "*(undefined4 *)(puVar16 + -0x1c)" * (cast_expression "(undefined4 *)(puVar16 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xa0)" * (cast_expression "(undefined4 *)(param_1 + 0xa0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);" (assignment_expression "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98)" (pointer_expression "*(undefined4 *)(puVar16 + -0x20)" * (cast_expression "(undefined4 *)(puVar16 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x20)" ( (binary_expression "puVar16 + -0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x98)" * (cast_expression "(undefined4 *)(param_1 + 0x98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94)" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" * (cast_expression "(undefined4 *)(puVar16 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x24)" ( (binary_expression "puVar16 + -0x24" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x94)" * (cast_expression "(undefined4 *)(param_1 + 0x94)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x28)" * (cast_expression "(undefined4 *)(puVar16 + -0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x3c)" * (cast_expression "(undefined4 *)(puVar16 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;" (assignment_expression "*(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2" (pointer_expression "*(int *)(puVar16 + -0x2c)" * (cast_expression "(int *)(puVar16 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x2c)" ( (binary_expression "puVar16 + -0x2c" identifier + number_literal) )))) = (binary_expression "unaff_EBX + 0x474c2" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar16 + -0x30) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x30) = param_1" (pointer_expression "*(int *)(puVar16 + -0x30)" * (cast_expression "(int *)(puVar16 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x30)" ( (binary_expression "puVar16 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;" (assignment_expression "*(undefined4 *)(puVar16 + -0x34) = 0x3a9e0" (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" * (cast_expression "(undefined4 *)(puVar16 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x34)" ( (binary_expression "puVar16 + -0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }" else (compound_statement "{\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }" { (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" * (cast_expression "(undefined4 *)(puVar16 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" * (cast_expression "(undefined4 *)(param_1 + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xac)" * (cast_expression "(undefined4 *)(param_1 + 0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xa4)" * (cast_expression "(undefined4 *)(param_1 + 0xa4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa4)" ( (binary_expression "param_1 + 0xa4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0)" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xa0)" * (cast_expression "(undefined4 *)(param_1 + 0xa0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);" (assignment_expression "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98)" (pointer_expression "*(undefined4 *)(puVar16 + -0x1c)" * (cast_expression "(undefined4 *)(puVar16 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x98)" * (cast_expression "(undefined4 *)(param_1 + 0x98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);" (assignment_expression "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94)" (pointer_expression "*(undefined4 *)(puVar16 + -0x20)" * (cast_expression "(undefined4 *)(puVar16 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x20)" ( (binary_expression "puVar16 + -0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x94)" * (cast_expression "(undefined4 *)(param_1 + 0x94)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" * (cast_expression "(undefined4 *)(puVar16 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x24)" ( (binary_expression "puVar16 + -0x24" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xf0c)" * (cast_expression "(undefined4 *)(param_1 + 0xf0c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf0c)" ( (binary_expression "param_1 + 0xf0c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x28)" * (cast_expression "(undefined4 *)(puVar16 + -0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x3c)" * (cast_expression "(undefined4 *)(puVar16 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;" (assignment_expression "*(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX" (pointer_expression "*(undefined **)(puVar16 + -0x2c)" * (cast_expression "(undefined **)(puVar16 + -0x2c)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x2c)" ( (binary_expression "puVar16 + -0x2c" identifier + number_literal) )))) = (binary_expression "&UNK_00047456 + unaff_EBX" (pointer_expression "&UNK_00047456" & identifier) + identifier)) ;) (expression_statement "*(int *)(puVar16 + -0x30) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x30) = param_1" (pointer_expression "*(int *)(puVar16 + -0x30)" * (cast_expression "(int *)(puVar16 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x30)" ( (binary_expression "puVar16 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x34) = 0x3a840;" (assignment_expression "*(undefined4 *)(puVar16 + -0x34) = 0x3a840" (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" * (cast_expression "(undefined4 *)(puVar16 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x34)" ( (binary_expression "puVar16 + -0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar11 = *(int *)(puVar16 + 0x30);" (assignment_expression "iVar11 = *(int *)(puVar16 + 0x30)" identifier = (pointer_expression "*(int *)(puVar16 + 0x30)" * (cast_expression "(int *)(puVar16 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x30)" ( (binary_expression "puVar16 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)unaff_retaddr + 0x261) = 1;" (assignment_expression "*(undefined1 *)((int)unaff_retaddr + 0x261) = 1" (pointer_expression "*(undefined1 *)((int)unaff_retaddr + 0x261)" * (cast_expression "(undefined1 *)((int)unaff_retaddr + 0x261)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_retaddr + 0x261)" ( (binary_expression "(int)unaff_retaddr + 0x261" (cast_expression "(int)unaff_retaddr" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));" (assignment_expression "unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13))" (subscript_expression "unaff_retaddr[0xcc]" identifier [ number_literal ]) = (binary_expression "unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13))" (subscript_expression "unaff_retaddr[0xcc]" identifier [ number_literal ]) + (parenthesized_expression "(iVar11 - (iVar10 + iVar13))" ( (binary_expression "iVar11 - (iVar10 + iVar13)" identifier - (parenthesized_expression "(iVar10 + iVar13)" ( (binary_expression "iVar10 + iVar13" identifier + identifier) ))) )))) ;) }))) (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0xb0)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" * (cast_expression "(undefined4 *)(param_1 + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);" (assignment_expression "*(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0)" (pointer_expression "*(undefined4 *)(puVar16 + 0x30)" * (cast_expression "(undefined4 *)(puVar16 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x30)" ( (binary_expression "puVar16 + 0x30" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xa0)" * (cast_expression "(undefined4 *)(param_1 + 0xa0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = *(int *)(param_1 + 0xac);" (assignment_expression "iVar13 = *(int *)(param_1 + 0xac)" identifier = (pointer_expression "*(int *)(param_1 + 0xac)" * (cast_expression "(int *)(param_1 + 0xac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x2c) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + 0x2c) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + 0x2c)" * (cast_expression "(undefined4 *)(puVar16 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + 0x28) = iVar13;" (assignment_expression "*(int *)(puVar16 + 0x28) = iVar13" (pointer_expression "*(int *)(puVar16 + 0x28)" * (cast_expression "(int *)(puVar16 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "uVar14 = *(int *)(puVar16 + 0x30) - iVar13;" (assignment_expression "uVar14 = *(int *)(puVar16 + 0x30) - iVar13" identifier = (binary_expression "*(int *)(puVar16 + 0x30) - iVar13" (pointer_expression "*(int *)(puVar16 + 0x30)" * (cast_expression "(int *)(puVar16 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x30)" ( (binary_expression "puVar16 + 0x30" identifier + number_literal) )))) - identifier)) ;) (if_statement "if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }" if (parenthesized_expression "((int)uVar14 < 0)" ( (binary_expression "(int)uVar14 < 0" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }" { (expression_statement "*(undefined4 *)(puVar16 + 0x58) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + 0x58) = 0" (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" * (cast_expression "(undefined4 *)(puVar16 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);" (assignment_expression "*(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28)" (pointer_expression "*(undefined4 *)(puVar16 + 0x30)" * (cast_expression "(undefined4 *)(puVar16 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x30)" ( (binary_expression "puVar16 + 0x30" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x28)" * (cast_expression "(undefined4 *)(puVar16 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);" (assignment_expression "*(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c)" (pointer_expression "*(undefined4 *)(puVar16 + 0x34)" * (cast_expression "(undefined4 *)(puVar16 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x34)" ( (binary_expression "puVar16 + 0x34" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x2c)" * (cast_expression "(undefined4 *)(puVar16 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) ))))) ;) }) (else_clause "else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }" else (compound_statement "{\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }" { (expression_statement "*(uint *)(puVar16 + 0x58) = uVar14;" (assignment_expression "*(uint *)(puVar16 + 0x58) = uVar14" (pointer_expression "*(uint *)(puVar16 + 0x58)" * (cast_expression "(uint *)(puVar16 + 0x58)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);" (assignment_expression "*(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28)" (pointer_expression "*(uint *)(puVar16 + 0x30)" * (cast_expression "(uint *)(puVar16 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x30)" ( (binary_expression "puVar16 + 0x30" identifier + number_literal) )))) = (binary_expression "uVar14 + *(uint *)(puVar16 + 0x28)" identifier + (pointer_expression "*(uint *)(puVar16 + 0x28)" * (cast_expression "(uint *)(puVar16 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))))) ;) (expression_statement "*(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));" (assignment_expression "*(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" (pointer_expression "*(uint *)(puVar16 + 0x34)" * (cast_expression "(uint *)(puVar16 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x34)" ( (binary_expression "puVar16 + 0x34" identifier + number_literal) )))) = (binary_expression "((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" (binary_expression "((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c)" (parenthesized_expression "((int)uVar14 >> 0x1f)" ( (binary_expression "(int)uVar14 >> 0x1f" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + (pointer_expression "*(int *)(puVar16 + 0x2c)" * (cast_expression "(int *)(puVar16 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) ))))) + (cast_expression "(uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" identifier (argument_list "(uVar14,*(uint *)(puVar16 + 0x28))" ( identifier , (pointer_expression "*(uint *)(puVar16 + 0x28)" * (cast_expression "(uint *)(puVar16 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))) )))))) ;) }))) (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal)) ;) })) (expression_statement "uVar9 = *(undefined4 *)(puVar16 + 0x30);" (assignment_expression "uVar9 = *(undefined4 *)(puVar16 + 0x30)" identifier = (pointer_expression "*(undefined4 *)(puVar16 + 0x30)" * (cast_expression "(undefined4 *)(puVar16 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x30)" ( (binary_expression "puVar16 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(undefined4 *)(puVar16 + 0x34);" (assignment_expression "uVar5 = *(undefined4 *)(puVar16 + 0x34)" identifier = (pointer_expression "*(undefined4 *)(puVar16 + 0x34)" * (cast_expression "(undefined4 *)(puVar16 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x34)" ( (binary_expression "puVar16 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0xac) = uVar9;" (assignment_expression "*(undefined4 *)(param_1 + 0xac) = uVar9" (pointer_expression "*(undefined4 *)(param_1 + 0xac)" * (cast_expression "(undefined4 *)(param_1 + 0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0xb0) = uVar5;" (assignment_expression "*(undefined4 *)(param_1 + 0xb0) = uVar5" (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" * (cast_expression "(undefined4 *)(param_1 + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = uVar5;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = uVar5" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a137;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a137" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001c950();" (call_expression "FUN_0001c950()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;" if (parenthesized_expression "(*(char *)(param_1 + 0x144) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x144) != '\0'" (pointer_expression "*(char *)(param_1 + 0x144)" * (cast_expression "(char *)(param_1 + 0x144)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x144)" ( (binary_expression "param_1 + 0x144" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00039df2;" goto statement_identifier ;)) (expression_statement "uVar14 = *(uint *)(param_1 + 0xd8);" (assignment_expression "uVar14 = *(uint *)(param_1 + 0xd8)" identifier = (pointer_expression "*(uint *)(param_1 + 0xd8)" * (cast_expression "(uint *)(param_1 + 0xd8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) ))))) ;) (if_statement "if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;" if (parenthesized_expression "((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)" ( (binary_expression "(*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0" (parenthesized_expression "(*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0)" ( (binary_expression "*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0" (binary_expression "*(int *)(puVar16 + 0x58) == 0" (pointer_expression "*(int *)(puVar16 + 0x58)" * (cast_expression "(int *)(puVar16 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) )))) == number_literal) && (binary_expression "uVar14 == 0" identifier == number_literal)) )) && (binary_expression "*(int *)(puVar16 + 0x10) == 0" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) == number_literal)) )) (goto_statement "goto LAB_0003a318;" goto statement_identifier ;)) (expression_statement "cVar7 = *(char *)(param_1 + 0x131);" (assignment_expression "cVar7 = *(char *)(param_1 + 0x131)" identifier = (pointer_expression "*(char *)(param_1 + 0x131)" * (cast_expression "(char *)(param_1 + 0x131)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x131)" ( (binary_expression "param_1 + 0x131" identifier + number_literal) ))))) ;) (if_statement "if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }" { (labeled_statement "LAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }" statement_identifier : (if_statement "if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }" if (parenthesized_expression "((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0))" ( (binary_expression "(*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)" (parenthesized_expression "(*(char *)(*unaff_retaddr + 0x95d) == '\0')" ( (binary_expression "*(char *)(*unaff_retaddr + 0x95d) == '\0'" (pointer_expression "*(char *)(*unaff_retaddr + 0x95d)" * (cast_expression "(char *)(*unaff_retaddr + 0x95d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*unaff_retaddr + 0x95d)" ( (binary_expression "*unaff_retaddr + 0x95d" (pointer_expression "*unaff_retaddr" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)" ( (comma_expression "iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0" (assignment_expression "iVar13 = *(int *)(param_1 + 0x118)" identifier = (pointer_expression "*(int *)(param_1 + 0x118)" * (cast_expression "(int *)(param_1 + 0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x118)" ( (binary_expression "param_1 + 0x118" identifier + number_literal) ))))) , (binary_expression "iVar13 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }" { (if_statement "if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }" if (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }" { (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" * (cast_expression "(undefined4 *)(puVar16 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" * (cast_expression "(undefined4 *)(puVar16 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xe8)" * (cast_expression "(undefined4 *)(param_1 + 0xe8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + -0xc) = iVar13;" (assignment_expression "*(int *)(puVar16 + -0xc) = iVar13" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a38f;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a38f" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00046a70();" (assignment_expression "iVar13 = FUN_00046a70()" identifier = (call_expression "FUN_00046a70()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_0003a392;" goto statement_identifier ;) })) (goto_statement "goto LAB_0003a1c7;" goto statement_identifier ;) }))) (expression_statement "iVar13 = unaff_retaddr[0x9f];" (assignment_expression "iVar13 = unaff_retaddr[0x9f]" identifier = (subscript_expression "unaff_retaddr[0x9f]" identifier [ number_literal ])) ;) (if_statement "if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }" if (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }" { (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0xe8);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0xe8)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xe8)" * (cast_expression "(undefined4 *)(param_1 + 0xe8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) ))))) ;) (if_statement "if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }" if (parenthesized_expression "((*(uint *)(iVar13 + 0x40) & 0xc000) == 0)" ( (binary_expression "(*(uint *)(iVar13 + 0x40) & 0xc000) == 0" (parenthesized_expression "(*(uint *)(iVar13 + 0x40) & 0xc000)" ( (binary_expression "*(uint *)(iVar13 + 0x40) & 0xc000" (pointer_expression "*(uint *)(iVar13 + 0x40)" * (cast_expression "(uint *)(iVar13 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x40)" ( (binary_expression "iVar13 + 0x40" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }" { (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" * (cast_expression "(undefined4 *)(puVar16 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" * (cast_expression "(undefined4 *)(puVar16 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a99a;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a99a" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00027580();" (assignment_expression "iVar13 = FUN_00027580()" identifier = (call_expression "FUN_00027580()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }" else (compound_statement "{\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }" { (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" * (cast_expression "(undefined4 *)(puVar16 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x58)" ( (binary_expression "puVar16 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a4d0" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00055cf0();" (assignment_expression "iVar13 = FUN_00055cf0()" identifier = (call_expression "FUN_00055cf0()" identifier (argument_list "()" ( )))) ;) }))) (labeled_statement "LAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(param_1 + 0xd8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xd8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xd8)" * (cast_expression "(undefined4 *)(param_1 + 0xd8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) )))) = number_literal) ;)) (if_statement "if (iVar13 == 0) goto LAB_00039df2;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00039df2;" goto statement_identifier ;)) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) }) (else_clause "else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }" else (compound_statement "{\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }" { (if_statement "if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }" if (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }" { (expression_statement "uVar14 = *(uint *)(param_1 + 0xa4);" (assignment_expression "uVar14 = *(uint *)(param_1 + 0xa4)" identifier = (pointer_expression "*(uint *)(param_1 + 0xa4)" * (cast_expression "(uint *)(param_1 + 0xa4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa4)" ( (binary_expression "param_1 + 0xa4" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(uint *)(param_1 + 0xa0);" (assignment_expression "uVar2 = *(uint *)(param_1 + 0xa0)" identifier = (pointer_expression "*(uint *)(param_1 + 0xa0)" * (cast_expression "(uint *)(param_1 + 0xa0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = *(uint *)(param_1 + 0xe4);" (assignment_expression "uVar8 = *(uint *)(param_1 + 0xe4)" identifier = (pointer_expression "*(uint *)(param_1 + 0xe4)" * (cast_expression "(uint *)(param_1 + 0xe4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe4)" ( (binary_expression "param_1 + 0xe4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);" (assignment_expression "*(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60)" (pointer_expression "*(undefined4 *)(puVar16 + 0x28)" * (cast_expression "(undefined4 *)(puVar16 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xc60)" * (cast_expression "(undefined4 *)(param_1 + 0xc60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc60)" ( (binary_expression "param_1 + 0xc60" identifier + number_literal) ))))) ;) (if_statement "if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }" if (parenthesized_expression "(((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14))" ( (binary_expression "((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)" (parenthesized_expression "((uVar14 & uVar2) == 0xffffffff)" ( (binary_expression "(uVar14 & uVar2) == 0xffffffff" (parenthesized_expression "(uVar14 & uVar2)" ( (binary_expression "uVar14 & uVar2" identifier & identifier) )) == number_literal) )) || (parenthesized_expression "((int)(uint)(uVar2 < uVar8) <= (int)uVar14)" ( (binary_expression "(int)(uint)(uVar2 < uVar8) <= (int)uVar14" (cast_expression "(int)(uint)(uVar2 < uVar8)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(uVar2 < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 < uVar8)" ( (binary_expression "uVar2 < uVar8" identifier < identifier) )))) <= (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n                *(uint *)(puVar16 + -4) = uVar8;\n              }" { (expression_statement "*(uint *)(puVar16 + -4) = uVar8;" (assignment_expression "*(uint *)(puVar16 + -4) = uVar8" (pointer_expression "*(uint *)(puVar16 + -4)" * (cast_expression "(uint *)(puVar16 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }" else (compound_statement "{\n                *(uint *)(puVar16 + -4) = uVar2;\n              }" { (expression_statement "*(uint *)(puVar16 + -4) = uVar2;" (assignment_expression "*(uint *)(puVar16 + -4) = uVar2" (pointer_expression "*(uint *)(puVar16 + -4)" * (cast_expression "(uint *)(puVar16 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x28)" * (cast_expression "(undefined4 *)(puVar16 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a1ad" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00027580();" (assignment_expression "iVar13 = FUN_00027580()" identifier = (call_expression "FUN_00027580()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (expression_statement "uVar14 = *(uint *)(param_1 + 0xd8);" (assignment_expression "uVar14 = *(uint *)(param_1 + 0xd8)" identifier = (pointer_expression "*(uint *)(param_1 + 0xd8)" * (cast_expression "(uint *)(param_1 + 0xd8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) ))))) ;) })) (if_statement "if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }" if (parenthesized_expression "(uVar14 < 2)" ( (binary_expression "uVar14 < 2" identifier < number_literal) )) (compound_statement "{\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }" { (expression_statement "cVar7 = *(char *)(param_1 + 0x131);" (assignment_expression "cVar7 = *(char *)(param_1 + 0x131)" identifier = (pointer_expression "*(char *)(param_1 + 0x131)" * (cast_expression "(char *)(param_1 + 0x131)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x131)" ( (binary_expression "param_1 + 0x131" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0003a358;" goto statement_identifier ;) })) (labeled_statement "LAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];" statement_identifier : (expression_statement "iVar13 = unaff_retaddr[0x9f];" (assignment_expression "iVar13 = unaff_retaddr[0x9f]" identifier = (subscript_expression "unaff_retaddr[0x9f]" identifier [ number_literal ])) ;)) }))) (expression_statement "*(undefined4 *)(param_1 + 0xd8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xd8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xd8)" * (cast_expression "(undefined4 *)(param_1 + 0xd8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00039df8;" goto statement_identifier ;) }))) (labeled_statement "LAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];" statement_identifier : (expression_statement "iVar13 = unaff_retaddr[0x9f];" (assignment_expression "iVar13 = unaff_retaddr[0x9f]" identifier = (subscript_expression "unaff_retaddr[0x9f]" identifier [ number_literal ])) ;)) (expression_statement "iVar10 = *(int *)(iVar13 + 0x34);" (assignment_expression "iVar10 = *(int *)(iVar13 + 0x34)" identifier = (pointer_expression "*(int *)(iVar13 + 0x34)" * (cast_expression "(int *)(iVar13 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x34)" ( (binary_expression "iVar13 + 0x34" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 != 0) goto LAB_00039dff;" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039dff;" goto statement_identifier ;)) (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" identifier = (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ;) }))) (if_statement "if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;" if (parenthesized_expression "((uVar14 & 0x10) != 0)" ( (binary_expression "(uVar14 & 0x10) != 0" (parenthesized_expression "(uVar14 & 0x10)" ( (binary_expression "uVar14 & 0x10" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0003a00e;" goto statement_identifier ;)) (if_statement "if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }" if (parenthesized_expression "((*(byte *)(iVar13 + 0x40) & 0x30) == 0)" ( (binary_expression "(*(byte *)(iVar13 + 0x40) & 0x30) == 0" (parenthesized_expression "(*(byte *)(iVar13 + 0x40) & 0x30)" ( (binary_expression "*(byte *)(iVar13 + 0x40) & 0x30" (pointer_expression "*(byte *)(iVar13 + 0x40)" * (cast_expression "(byte *)(iVar13 + 0x40)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x40)" ( (binary_expression "iVar13 + 0x40" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }" { (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 0" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39feb;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39feb" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar7 = FUN_0007b420();" (assignment_expression "cVar7 = FUN_0007b420()" identifier = (call_expression "FUN_0007b420()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;" if (parenthesized_expression "((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))" ( (binary_expression "(cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14)))" (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14)))" ( (parenthesized_expression "((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))" ( (binary_expression "(*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14)" (binary_expression "(*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0" (parenthesized_expression "(*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3)" ( (binary_expression "*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3" (pointer_expression "*(byte *)(unaff_retaddr[0x9f] + 0x40)" * (cast_expression "(byte *)(unaff_retaddr[0x9f] + 0x40)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr[0x9f] + 0x40)" ( (binary_expression "unaff_retaddr[0x9f] + 0x40" (subscript_expression "unaff_retaddr[0x9f]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) == number_literal) || (parenthesized_expression "(unaff_retaddr[0x5e] != 0x14)" ( (binary_expression "unaff_retaddr[0x5e] != 0x14" (subscript_expression "unaff_retaddr[0x5e]" identifier [ number_literal ]) != number_literal) ))) )) ))) )) (goto_statement "goto LAB_0003a008;" goto statement_identifier ;)) })) (expression_statement "*(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;" (assignment_expression "*(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1" (pointer_expression "*(int *)(puVar16 + 0x1c)" * (cast_expression "(int *)(puVar16 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar16 + 0x1c) + -1" (pointer_expression "*(int *)(puVar16 + 0x1c)" * (cast_expression "(int *)(puVar16 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);" (assignment_expression "*(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20)" (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" * (cast_expression "(undefined4 *)(puVar16 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x20)" * (cast_expression "(undefined4 *)(puVar16 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(*(int *)(puVar16 + 0x1c) != -1)" ( (binary_expression "*(int *)(puVar16 + 0x1c) != -1" (pointer_expression "*(int *)(puVar16 + 0x1c)" * (cast_expression "(int *)(puVar16 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) )))) != number_literal) )) ;) (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" identifier = (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00039e5f:\n    puVar17 = *(undefined1 **)(puVar16 + 0x44);" statement_identifier : (expression_statement "puVar17 = *(undefined1 **)(puVar16 + 0x44);" (assignment_expression "puVar17 = *(undefined1 **)(puVar16 + 0x44)" identifier = (pointer_expression "*(undefined1 **)(puVar16 + 0x44)" * (cast_expression "(undefined1 **)(puVar16 + 0x44)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x44)" ( (binary_expression "puVar16 + 0x44" identifier + number_literal) ))))) ;)) (expression_statement "unaff_retaddr[0x158] = 1;" (assignment_expression "unaff_retaddr[0x158] = 1" (subscript_expression "unaff_retaddr[0x158]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar17 = 1;" (assignment_expression "*puVar17 = 1" (pointer_expression "*puVar17" * identifier) = number_literal) ;) (labeled_statement "joined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }" statement_identifier : (if_statement "if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }" if (parenthesized_expression "(((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0'))" ( (binary_expression "((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')" (parenthesized_expression "((uVar14 & 3) == 2)" ( (binary_expression "(uVar14 & 3) == 2" (parenthesized_expression "(uVar14 & 3)" ( (binary_expression "uVar14 & 3" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "(*(char *)((int)unaff_retaddr + 0x249) != '\0')" ( (binary_expression "*(char *)((int)unaff_retaddr + 0x249) != '\0'" (pointer_expression "*(char *)((int)unaff_retaddr + 0x249)" * (cast_expression "(char *)((int)unaff_retaddr + 0x249)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_retaddr + 0x249)" ( (binary_expression "(int)unaff_retaddr + 0x249" (cast_expression "(int)unaff_retaddr" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }" { (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "unaff_EBX + 0x4752a" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a44d;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a44d" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" identifier (argument_list "()" ( ))) ;) (expression_statement "pcVar6 = *(char **)(puVar16 + 0x38);" (assignment_expression "pcVar6 = *(char **)(puVar16 + 0x38)" identifier = (pointer_expression "*(char **)(puVar16 + 0x38)" * (cast_expression "(char **)(puVar16 + 0x38)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x38)" ( (binary_expression "puVar16 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffd" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }" if (parenthesized_expression "(*pcVar6 != '\0')" ( (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }" { (labeled_statement "LAB_0003a468:\n        iVar13 = 0;" statement_identifier : (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }" else (compound_statement "{\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }" { (labeled_statement "LAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;" statement_identifier : (if_statement "if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;" if (parenthesized_expression "(**(char **)(puVar16 + 0x38) != '\0')" ( (binary_expression "**(char **)(puVar16 + 0x38) != '\0'" (pointer_expression "**(char **)(puVar16 + 0x38)" * (pointer_expression "*(char **)(puVar16 + 0x38)" * (cast_expression "(char **)(puVar16 + 0x38)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x38)" ( (binary_expression "puVar16 + 0x38" identifier + number_literal) ))))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0003a468;" goto statement_identifier ;))) (if_statement "if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;" if (parenthesized_expression "(((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0))" ( (binary_expression "((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)" (parenthesized_expression "((*(byte *)(param_1 + 300) & 2) != 0)" ( (binary_expression "(*(byte *)(param_1 + 300) & 2) != 0" (parenthesized_expression "(*(byte *)(param_1 + 300) & 2)" ( (binary_expression "*(byte *)(param_1 + 300) & 2" (pointer_expression "*(byte *)(param_1 + 300)" * (cast_expression "(byte *)(param_1 + 300)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((puVar16[8] & 2) != 0)" ( (binary_expression "(puVar16[8] & 2) != 0" (parenthesized_expression "(puVar16[8] & 2)" ( (binary_expression "puVar16[8] & 2" (subscript_expression "puVar16[8]" identifier [ number_literal ]) & number_literal) )) != number_literal) ))) )) (goto_statement "goto LAB_00039b2b;" goto statement_identifier ;)) })))) (expression_statement "puVar17 = puVar16 + 0x48;" (assignment_expression "puVar17 = puVar16 + 0x48" identifier = (binary_expression "puVar16 + 0x48" identifier + number_literal)) ;) (labeled_statement "LAB_00039ea1:\n    *(undefined1 **)(puVar16 + -0x10) = puVar17;" statement_identifier : (expression_statement "*(undefined1 **)(puVar16 + -0x10) = puVar17;" (assignment_expression "*(undefined1 **)(puVar16 + -0x10) = puVar17" (pointer_expression "*(undefined1 **)(puVar16 + -0x10)" * (cast_expression "(undefined1 **)(puVar16 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;)) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39eaa;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39eaa" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001ab40();" (call_expression "FUN_0001ab40()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar9 = *(undefined4 *)(puVar16 + 0x48);" (assignment_expression "uVar9 = *(undefined4 *)(puVar16 + 0x48)" identifier = (pointer_expression "*(undefined4 *)(puVar16 + 0x48)" * (cast_expression "(undefined4 *)(puVar16 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x48)" ( (binary_expression "puVar16 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = *(int *)(puVar16 + 0x20);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x20)" identifier = (pointer_expression "*(int *)(puVar16 + 0x20)" * (cast_expression "(int *)(puVar16 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "puVar15 = puVar16 + -4;" (assignment_expression "puVar15 = puVar16 + -4" identifier = (binary_expression "puVar16 + -4" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);" (assignment_expression "*(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44)" (pointer_expression "*(undefined4 *)(iVar13 + 0x38)" * (cast_expression "(undefined4 *)(iVar13 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x38)" ( (binary_expression "iVar13 + 0x38" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x44)" * (cast_expression "(undefined4 *)(puVar16 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x44)" ( (binary_expression "puVar16 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x3c) = uVar9;" (assignment_expression "*(undefined4 *)(iVar13 + 0x3c) = uVar9" (pointer_expression "*(undefined4 *)(iVar13 + 0x3c)" * (cast_expression "(undefined4 *)(iVar13 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x3c)" ( (binary_expression "iVar13 + 0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar4 = (undefined4 *)(puVar16 + -4);" (assignment_expression "puVar4 = (undefined4 *)(puVar16 + -4)" identifier = (cast_expression "(undefined4 *)(puVar16 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) ;) (if_statement "if (*(int *)(puVar16 + 0x1c) == 0) goto LAB_00039c5c;" if (parenthesized_expression "(*(int *)(puVar16 + 0x1c) == 0)" ( (binary_expression "*(int *)(puVar16 + 0x1c) == 0" (pointer_expression "*(int *)(puVar16 + 0x1c)" * (cast_expression "(int *)(puVar16 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00039c5c;" goto statement_identifier ;)) (labeled_statement "LAB_00039ecb:\n    puVar4 = *(undefined4 **)(param_1 + 0x9c);" statement_identifier : (expression_statement "puVar4 = *(undefined4 **)(param_1 + 0x9c);" (assignment_expression "puVar4 = *(undefined4 **)(param_1 + 0x9c)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 0x9c)" * (cast_expression "(undefined4 **)(param_1 + 0x9c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x9c)" ( (binary_expression "param_1 + 0x9c" identifier + number_literal) ))))) ;)) (if_statement "if (puVar4 != (undefined4 *)0x0) {\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }" if (parenthesized_expression "(puVar4 != (undefined4 *)0x0)" ( (binary_expression "puVar4 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }" { (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0xb0)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" * (cast_expression "(undefined4 *)(param_1 + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (expression_statement "*puVar4 = *(undefined4 *)(param_1 + 0xac);" (assignment_expression "*puVar4 = *(undefined4 *)(param_1 + 0xac)" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*(undefined4 *)(param_1 + 0xac)" * (cast_expression "(undefined4 *)(param_1 + 0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) ))))) ;) (expression_statement "puVar4[1] = uVar9;" (assignment_expression "puVar4[1] = uVar9" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "puVar4 = *(undefined4 **)(param_1 + 0xa8);" (assignment_expression "puVar4 = *(undefined4 **)(param_1 + 0xa8)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 0xa8)" * (cast_expression "(undefined4 **)(param_1 + 0xa8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xa8)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) ))))) ;) (if_statement "if (puVar4 == (undefined4 *)0x0) goto LAB_00039c69;" if (parenthesized_expression "(puVar4 == (undefined4 *)0x0)" ( (binary_expression "puVar4 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00039c69;" goto statement_identifier ;)) (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0xb8);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0xb8)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xb8)" * (cast_expression "(undefined4 *)(param_1 + 0xb8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb8)" ( (binary_expression "param_1 + 0xb8" identifier + number_literal) ))))) ;) (expression_statement "*puVar4 = *(undefined4 *)(param_1 + 0xb4);" (assignment_expression "*puVar4 = *(undefined4 *)(param_1 + 0xb4)" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*(undefined4 *)(param_1 + 0xb4)" * (cast_expression "(undefined4 *)(param_1 + 0xb4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb4)" ( (binary_expression "param_1 + 0xb4" identifier + number_literal) ))))) ;) (expression_statement "puVar4[1] = uVar9;" (assignment_expression "puVar4[1] = uVar9" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int **)(puVar15 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar15 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar15 + -0x10)" * (cast_expression "(int **)(puVar15 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + -0x10)" ( (binary_expression "puVar15 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x39f0e;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x39f0e" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" * (cast_expression "(undefined4 *)(puVar15 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x14)" ( (binary_expression "puVar15 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_0001cc10();" (assignment_expression "iVar13 = FUN_0001cc10()" identifier = (call_expression "FUN_0001cc10()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar16 = puVar15;" (assignment_expression "puVar16 = puVar15" identifier = identifier) ;) }))) (if_statement "if (iVar13 == 0) {\n    *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n    *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n    *(int *)(puVar16 + -0x10) = param_1;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39c90;\n    iVar13 = FUN_00033f20();\n    if (iVar13 != 0) goto LAB_00039d70;\n    if (*(int *)(param_1 + 300) == 0) {\n      if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a48c;\n      iVar10 = FUN_0001cc10();\n      if (iVar10 != 0) goto LAB_00039f19;\n    }\n    else {\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }\n    *(bool *)*(undefined4 *)(puVar16 + 0x38) = (*(byte *)(param_1 + 300) & 0x33) == 0;\n  }\n  else {\nLAB_00039f19:\n    iVar13 = 0x2a;\n  }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n    *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n    *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n    *(int *)(puVar16 + -0x10) = param_1;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39c90;\n    iVar13 = FUN_00033f20();\n    if (iVar13 != 0) goto LAB_00039d70;\n    if (*(int *)(param_1 + 300) == 0) {\n      if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a48c;\n      iVar10 = FUN_0001cc10();\n      if (iVar10 != 0) goto LAB_00039f19;\n    }\n    else {\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }\n    *(bool *)*(undefined4 *)(puVar16 + 0x38) = (*(byte *)(param_1 + 300) & 0x33) == 0;\n  }" { (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" * (cast_expression "(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0x24) + 0x3c)" ( (binary_expression "*(int *)(puVar16 + 0x24) + 0x3c" (pointer_expression "*(int *)(puVar16 + 0x24)" * (cast_expression "(int *)(puVar16 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24)" ( (binary_expression "puVar16 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" * (cast_expression "(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0x24) + 0x38)" ( (binary_expression "*(int *)(puVar16 + 0x24) + 0x38" (pointer_expression "*(int *)(puVar16 + 0x24)" * (cast_expression "(int *)(puVar16 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24)" ( (binary_expression "puVar16 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39c90;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39c90" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = FUN_00033f20();" (assignment_expression "iVar13 = FUN_00033f20()" identifier = (call_expression "FUN_00033f20()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;)) (if_statement "if (*(int *)(param_1 + 300) == 0) {\n      if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a48c;\n      iVar10 = FUN_0001cc10();\n      if (iVar10 != 0) goto LAB_00039f19;\n    }\n    else {\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }" if (parenthesized_expression "(*(int *)(param_1 + 300) == 0)" ( (binary_expression "*(int *)(param_1 + 300) == 0" (pointer_expression "*(int *)(param_1 + 300)" * (cast_expression "(int *)(param_1 + 300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a48c;\n      iVar10 = FUN_0001cc10();\n      if (iVar10 != 0) goto LAB_00039f19;\n    }" { (if_statement "if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }" if (parenthesized_expression "(*(char *)(param_1 + 0x934) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x934) == '\0'" (pointer_expression "*(char *)(param_1 + 0x934)" * (cast_expression "(char *)(param_1 + 0x934)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x934)" ( (binary_expression "param_1 + 0x934" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }" { (expression_statement "uVar14 = *(uint *)(param_1 + 0x98);" (assignment_expression "uVar14 = *(uint *)(param_1 + 0x98)" identifier = (pointer_expression "*(uint *)(param_1 + 0x98)" * (cast_expression "(uint *)(param_1 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);" (assignment_expression "*(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94)" (pointer_expression "*(undefined4 *)(puVar16 + 8)" * (cast_expression "(undefined4 *)(puVar16 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x94)" * (cast_expression "(undefined4 *)(param_1 + 0x94)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar16 + 0xc) = uVar14;" (assignment_expression "*(uint *)(puVar16 + 0xc) = uVar14" (pointer_expression "*(uint *)(puVar16 + 0xc)" * (cast_expression "(uint *)(puVar16 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }" if (parenthesized_expression "((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff)" ( (binary_expression "(uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff" (parenthesized_expression "(uVar14 & *(uint *)(puVar16 + 8))" ( (binary_expression "uVar14 & *(uint *)(puVar16 + 8)" identifier & (pointer_expression "*(uint *)(puVar16 + 8)" * (cast_expression "(uint *)(puVar16 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) ))))) )) == number_literal) )) (compound_statement "{\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }" { (labeled_statement "LAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;" statement_identifier : (if_statement "if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;" if (parenthesized_expression "((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4))" ( (binary_expression "(*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)" (parenthesized_expression "(*(char *)(param_1 + 0x144) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x144) == '\0'" (pointer_expression "*(char *)(param_1 + 0x144)" * (cast_expression "(char *)(param_1 + 0x144)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x144)" ( (binary_expression "param_1 + 0x144" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(unaff_retaddr[10] == 4)" ( (binary_expression "unaff_retaddr[10] == 4" (subscript_expression "unaff_retaddr[10]" identifier [ number_literal ]) == number_literal) ))) )) (goto_statement "goto LAB_0003a483;" goto statement_identifier ;))) (expression_statement "unaff_EBX = unaff_EBX + 0x47696;" (assignment_expression "unaff_EBX = unaff_EBX + 0x47696" identifier = (binary_expression "unaff_EBX + 0x47696" identifier + number_literal)) ;) }) (else_clause "else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }" else (compound_statement "{\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }" { (expression_statement "iVar10 = *(int *)(param_1 + 0xac);" (assignment_expression "iVar10 = *(int *)(param_1 + 0xac)" identifier = (pointer_expression "*(int *)(param_1 + 0xac)" * (cast_expression "(int *)(param_1 + 0xac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "*(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0)" (pointer_expression "*(undefined4 *)(puVar16 + 0x14)" * (cast_expression "(undefined4 *)(puVar16 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" * (cast_expression "(undefined4 *)(param_1 + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + 0x10) = iVar10;" (assignment_expression "*(int *)(puVar16 + 0x10) = iVar10" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = identifier) ;) (if_statement "if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;" if (parenthesized_expression "(((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0))" ( (binary_expression "((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)" (parenthesized_expression "((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8)))" ( (binary_expression "(*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))" (parenthesized_expression "(*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10)" ( (binary_expression "*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10" (binary_expression "*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc)" (pointer_expression "*(int *)(puVar16 + 0x14)" * (cast_expression "(int *)(puVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) )))) == (pointer_expression "*(int *)(puVar16 + 0xc)" * (cast_expression "(int *)(puVar16 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) ))))) && (binary_expression "*(int *)(puVar16 + 8) == iVar10" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) == identifier)) )) || (parenthesized_expression "(*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))" ( (binary_expression "*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8)" (binary_expression "*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8))" (pointer_expression "*(int *)(puVar16 + 0x14)" * (cast_expression "(int *)(puVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) )))) == (binary_expression "*(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8))" (binary_expression "*(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac)" (pointer_expression "*(int *)(puVar16 + 0xc)" * (cast_expression "(int *)(puVar16 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0xeac)" * (cast_expression "(int *)(param_1 + 0xeac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xeac)" ( (binary_expression "param_1 + 0xeac" identifier + number_literal) ))))) + (cast_expression "(uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8))" identifier (argument_list "(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8))" ( (pointer_expression "*(uint *)(puVar16 + 8)" * (cast_expression "(uint *)(puVar16 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) , (pointer_expression "*(uint *)(param_1 + 0xea8)" * (cast_expression "(uint *)(param_1 + 0xea8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xea8)" ( (binary_expression "param_1 + 0xea8" identifier + number_literal) )))) )))))) && (binary_expression "*(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8)" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) == (binary_expression "*(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8)" (pointer_expression "*(uint *)(puVar16 + 8)" * (cast_expression "(uint *)(puVar16 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) + (pointer_expression "*(uint *)(param_1 + 0xea8)" * (cast_expression "(uint *)(param_1 + 0xea8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xea8)" ( (binary_expression "param_1 + 0xea8" identifier + number_literal) ))))))) ))) )) || (parenthesized_expression "(*(int *)(param_1 + 0x138) != 0)" ( (binary_expression "*(int *)(param_1 + 0x138) != 0" (pointer_expression "*(int *)(param_1 + 0x138)" * (cast_expression "(int *)(param_1 + 0x138)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x138)" ( (binary_expression "param_1 + 0x138" identifier + number_literal) )))) != number_literal) ))) )) (goto_statement "goto LAB_0003a470;" goto statement_identifier ;)) (expression_statement "*(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));" (assignment_expression "*(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10))" (pointer_expression "*(uint *)(puVar16 + -4)" * (cast_expression "(uint *)(puVar16 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (binary_expression "(*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10))" (parenthesized_expression "(*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14))" ( (binary_expression "*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)" (pointer_expression "*(int *)(puVar16 + 0xc)" * (cast_expression "(int *)(puVar16 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) - (pointer_expression "*(int *)(puVar16 + 0x14)" * (cast_expression "(int *)(puVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) ))))) )) - (call_expression "(uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10))" ( (binary_expression "*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10)" (pointer_expression "*(uint *)(puVar16 + 8)" * (cast_expression "(uint *)(puVar16 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) < (pointer_expression "*(uint *)(puVar16 + 0x10)" * (cast_expression "(uint *)(puVar16 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) ))))) ;) (expression_statement "*(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);" (assignment_expression "*(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10)" (pointer_expression "*(uint *)(puVar16 + -8)" * (cast_expression "(uint *)(puVar16 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (binary_expression "*(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10)" (pointer_expression "*(uint *)(puVar16 + 8)" * (cast_expression "(uint *)(puVar16 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) - (pointer_expression "*(uint *)(puVar16 + 0x10)" * (cast_expression "(uint *)(puVar16 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))))) ;) (expression_statement "unaff_EBX = unaff_EBX + 0x47662;" (assignment_expression "unaff_EBX = unaff_EBX + 0x47662" identifier = (binary_expression "unaff_EBX + 0x47662" identifier + number_literal)) ;) }))) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar13 = 0x12;" (assignment_expression "iVar13 = 0x12" identifier = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39d6c;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39d6c" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027240();" (call_expression "FUN_00027240()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) (labeled_statement "LAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;" statement_identifier : (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;)) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a48c;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a48c" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar10 = FUN_0001cc10();" (assignment_expression "iVar10 = FUN_0001cc10()" identifier = (call_expression "FUN_0001cc10()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar10 != 0) goto LAB_00039f19;" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00039f19;" goto statement_identifier ;)) }) (else_clause "else {\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }" else (compound_statement "{\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }" { (expression_statement "*(undefined4 *)(puVar16 + -8) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = 0" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0xc) = param_1 + 0xcc;" (assignment_expression "*(int *)(puVar16 + -0xc) = param_1 + 0xcc" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "param_1 + 0xcc" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a40a;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a40a" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar10 = FUN_0003f980();" (assignment_expression "iVar10 = FUN_0003f980()" identifier = (call_expression "FUN_0003f980()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (compound_statement "{\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }" { (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0x98);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0x98)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x98)" * (cast_expression "(undefined4 *)(param_1 + 0x98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);" (assignment_expression "*(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94)" (pointer_expression "*(undefined4 *)(puVar16 + 8)" * (cast_expression "(undefined4 *)(puVar16 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x94)" * (cast_expression "(undefined4 *)(param_1 + 0x94)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(undefined4 *)(param_1 + 0xac);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 0xac)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xac)" * (cast_expression "(undefined4 *)(param_1 + 0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xac)" ( (binary_expression "param_1 + 0xac" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0xc) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + 0xc) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + 0xc)" * (cast_expression "(undefined4 *)(puVar16 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x10) = uVar5;" (assignment_expression "*(undefined4 *)(puVar16 + 0x10) = uVar5" (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" * (cast_expression "(undefined4 *)(puVar16 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "*(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0)" (pointer_expression "*(undefined4 *)(puVar16 + 0x14)" * (cast_expression "(undefined4 *)(puVar16 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" * (cast_expression "(undefined4 *)(param_1 + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb0)" ( (binary_expression "param_1 + 0xb0" identifier + number_literal) ))))) ;) (if_statement "if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }" if (parenthesized_expression "((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff)" ( (binary_expression "(*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff" (parenthesized_expression "(*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc))" ( (binary_expression "*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)" (pointer_expression "*(uint *)(puVar16 + 8)" * (cast_expression "(uint *)(puVar16 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) & (pointer_expression "*(uint *)(puVar16 + 0xc)" * (cast_expression "(uint *)(puVar16 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) ))))) )) == number_literal) )) (compound_statement "{\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }" { (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" * (cast_expression "(undefined4 *)(puVar16 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xbb0)" * (cast_expression "(undefined4 *)(param_1 + 0xbb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xbb0)" ( (binary_expression "param_1 + 0xbb0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xbac)" * (cast_expression "(undefined4 *)(param_1 + 0xbac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xbac)" ( (binary_expression "param_1 + 0xbac" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" * (cast_expression "(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0x24) + 0x3c)" ( (binary_expression "*(int *)(puVar16 + 0x24) + 0x3c" (pointer_expression "*(int *)(puVar16 + 0x24)" * (cast_expression "(int *)(puVar16 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24)" ( (binary_expression "puVar16 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" * (cast_expression "(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0x24) + 0x38)" ( (binary_expression "*(int *)(puVar16 + 0x24) + 0x38" (pointer_expression "*(int *)(puVar16 + 0x24)" * (cast_expression "(int *)(puVar16 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24)" ( (binary_expression "puVar16 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3acc4;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3acc4" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar9 = FUN_0001abe0();" (assignment_expression "uVar9 = FUN_0001abe0()" identifier = (call_expression "FUN_0001abe0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x14)" * (cast_expression "(undefined4 *)(puVar16 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" * (cast_expression "(undefined4 *)(puVar16 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "unaff_EBX = unaff_EBX + 0x4761e;" (assignment_expression "unaff_EBX = unaff_EBX + 0x4761e" identifier = (binary_expression "unaff_EBX + 0x4761e" identifier + number_literal)) ;) }) (else_clause "else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }" else (compound_statement "{\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }" { (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" * (cast_expression "(undefined4 *)(puVar16 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xbb0)" * (cast_expression "(undefined4 *)(param_1 + 0xbb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xbb0)" ( (binary_expression "param_1 + 0xbb0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xbac)" * (cast_expression "(undefined4 *)(param_1 + 0xbac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xbac)" ( (binary_expression "param_1 + 0xbac" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" * (cast_expression "(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0x24) + 0x3c)" ( (binary_expression "*(int *)(puVar16 + 0x24) + 0x3c" (pointer_expression "*(int *)(puVar16 + 0x24)" * (cast_expression "(int *)(puVar16 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24)" ( (binary_expression "puVar16 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" * (cast_expression "(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0x24) + 0x38)" ( (binary_expression "*(int *)(puVar16 + 0x24) + 0x38" (pointer_expression "*(int *)(puVar16 + 0x24)" * (cast_expression "(int *)(puVar16 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24)" ( (binary_expression "puVar16 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3abd6;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3abd6" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar9 = FUN_0001abe0();" (assignment_expression "uVar9 = FUN_0001abe0()" identifier = (call_expression "FUN_0001abe0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0xc)" * (cast_expression "(undefined4 *)(puVar16 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 8)" * (cast_expression "(undefined4 *)(puVar16 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x14)" * (cast_expression "(undefined4 *)(puVar16 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" * (cast_expression "(undefined4 *)(puVar16 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "unaff_EBX = unaff_EBX + 0x475ce;" (assignment_expression "unaff_EBX = unaff_EBX + 0x475ce" identifier = (binary_expression "unaff_EBX + 0x475ce" identifier + number_literal)) ;) }))) (expression_statement "*(int *)(puVar16 + -0x1c) = unaff_EBX;" (assignment_expression "*(int *)(puVar16 + -0x1c) = unaff_EBX" (pointer_expression "*(int *)(puVar16 + -0x1c)" * (cast_expression "(int *)(puVar16 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar13 = 0x1c;" (assignment_expression "iVar13 = 0x1c" identifier = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0x20) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x20) = param_1" (pointer_expression "*(int *)(puVar16 + -0x20)" * (cast_expression "(int *)(puVar16 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x20)" ( (binary_expression "puVar16 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = 0x3abfc;" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = 0x3abfc" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" * (cast_expression "(undefined4 *)(puVar16 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x24)" ( (binary_expression "puVar16 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027240();" (call_expression "FUN_00027240()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00039d70;" goto statement_identifier ;) })) }))) (expression_statement "*(bool *)*(undefined4 *)(puVar16 + 0x38) = (*(byte *)(param_1 + 300) & 0x33) == 0;" (assignment_expression "*(bool *)*(undefined4 *)(puVar16 + 0x38) = (*(byte *)(param_1 + 300) & 0x33) == 0" (pointer_expression "*(bool *)*(undefined4 *)(puVar16 + 0x38)" * (cast_expression "(bool *)*(undefined4 *)(puVar16 + 0x38)" ( (type_descriptor "bool *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*(undefined4 *)(puVar16 + 0x38)" * (cast_expression "(undefined4 *)(puVar16 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x38)" ( (binary_expression "puVar16 + 0x38" identifier + number_literal) )))))) = (binary_expression "(*(byte *)(param_1 + 300) & 0x33) == 0" (parenthesized_expression "(*(byte *)(param_1 + 300) & 0x33)" ( (binary_expression "*(byte *)(param_1 + 300) & 0x33" (pointer_expression "*(byte *)(param_1 + 300)" * (cast_expression "(byte *)(param_1 + 300)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) & number_literal) )) == number_literal)) ;) }) (else_clause "else {\nLAB_00039f19:\n    iVar13 = 0x2a;\n  }" else (compound_statement "{\nLAB_00039f19:\n    iVar13 = 0x2a;\n  }" { (labeled_statement "LAB_00039f19:\n    iVar13 = 0x2a;" statement_identifier : (expression_statement "iVar13 = 0x2a;" (assignment_expression "iVar13 = 0x2a" identifier = number_literal) ;)) }))) (labeled_statement "LAB_00039d70:\n  if (*(int *)(puVar16 + 0x5c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar13;\n  }" statement_identifier : (if_statement "if (*(int *)(puVar16 + 0x5c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar13;\n  }" if (parenthesized_expression "(*(int *)(puVar16 + 0x5c) == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "*(int *)(puVar16 + 0x5c) == *(int *)(in_GS_OFFSET + 0x14)" (pointer_expression "*(int *)(puVar16 + 0x5c)" * (cast_expression "(int *)(puVar16 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x5c)" ( (binary_expression "puVar16 + 0x5c" identifier + number_literal) )))) == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return iVar13;\n  }" { (return_statement "return iVar13;" return identifier ;) }))) (expression_statement "*(undefined4 *)(puVar16 + -4) = 0x3ad7f;" (assignment_expression "*(undefined4 *)(puVar16 + -4) = 0x3ad7f" (pointer_expression "*(undefined4 *)(puVar16 + -4)" * (cast_expression "(undefined4 *)(puVar16 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0007c1a0();" (call_expression "FUN_0007c1a0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT )))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) ))) )) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT))) ))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) && (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT)) )) && (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) && (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & IDENT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))))) ;) })) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (break_statement break ;)) (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 = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) ))) )) && (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) && (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) })) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (subscript_expression IDENT [ LIT ])) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & IDENT) )) != LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ))) < (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))))) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) && (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT)) )) && (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) && (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT)) ))) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (goto_statement goto statement_identifier ;))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) && (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )))) <= (unary_expression - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ))) )) && (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) ))) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ;) }))) })) (goto_statement goto statement_identifier ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + IDENT) ))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) }))) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) || (binary_expression IDENT != LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) && (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) })) })) })) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (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 = (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 (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & IDENT) )) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT)) , (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) != (call_expression IDENT (argument_list ( IDENT , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) ))) )))) )) == (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) )))) ))) < LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + (parenthesized_expression ( (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT + 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))))) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) && (binary_expression IDENT == LIT)) )) && (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & IDENT) )) == LIT) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) & LIT) )) == LIT) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) ))) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) ))) )) (goto_statement goto statement_identifier ;)) })))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) && (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT)) )) || (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))))) && (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) = (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT)) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "int FUN_00039860(int param_1,undefined1 *param_2,undefined1 *param_3)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  char *pcVar6;\n  char cVar7;\n  uint uVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  uint uVar14;\n  int unaff_EBX;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined1 *puVar17;\n  int in_GS_OFFSET;\n  bool bVar18;\n  int *unaff_retaddr;\n  int aiStackY_a4 [5];\n  undefined4 uStack_84;\n  undefined1 auStack_80 [8];\n  uint local_78;\n  uint local_70 [10];\n  undefined1 *local_48;\n  undefined4 local_44;\n  undefined1 *local_3c [4];\n  undefined1 local_2a;\n  undefined4 local_28 [5];\n  undefined4 uStack_14;\n  \n  iVar13 = -1;\n  uStack_14 = 0x3986e;\n  entry();\n  local_48 = param_2;\n  local_3c[0] = param_3;\n  local_28[1] = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  local_70[5] = param_1 + 0x94;\n  local_78 = unaff_retaddr[0x158];\n  unaff_retaddr[0x158] = 0;\n  if ((*(uint *)(param_1 + 300) & 0x15) == 1) {\n    iVar13 = unaff_retaddr[0xa5];\n  }\n  iVar10 = -1;\n  if ((*(uint *)(param_1 + 300) & 0x2a) == 2) {\n    iVar10 = unaff_retaddr[0xa6];\n  }\n  if (*(int *)(*unaff_retaddr + 0xed4) == 0) {\n    if (local_78 == 0) {\n      uStack_84 = 0;\n      local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);\n    }\n  }\n  else {\n    local_78 = local_78 | 1;\n  }\n  puVar16 = auStack_80;\n  if (local_78 == 4) {\n    iVar13 = 0x37;\n    FUN_00027240(param_1,unaff_EBX + 0x47047);\n    goto LAB_00039d70;\n  }\n  local_70[4] = *(uint *)(param_1 + 300) & 1;\n  if ((local_70[4] == 0) ||\n     (((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0')))) {\n    if (((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }\n      iVar13 = *(int *)(param_1 + 0x13c);\n      if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }\nLAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n      *(undefined4 *)(puVar16 + -0x14) = 0x39c18;\n      FUN_0001ab40();\n      uVar9 = *(undefined4 *)(puVar16 + 0x48);\n      iVar13 = *(int *)(puVar16 + 0x20);\n      puVar15 = puVar16 + -4;\n      *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n      *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n      goto LAB_00039ecb;\n    }\n    FUN_0001ab40(local_3c + 1);\n    *(undefined1 **)(param_1 + 0xcc) = local_3c[0];\n    *(undefined1 **)(param_1 + 0xd0) = local_3c[1];\n    puVar4 = &uStack_84;\nLAB_00039c5c:\n    puVar15 = (undefined1 *)puVar4;\n    if (*(int *)(param_1 + 0x110) == 1) {\n      iVar13 = *(int *)(puVar15 + 0x24);\n      *(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);\n      *(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);\n      *(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);\n      *(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);\n      *(undefined4 *)(puVar15 + -0x14) = 0x3a775;\n      iVar13 = FUN_0001abe0();\n      if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }\n    }\nLAB_00039c69:\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39c72;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }\n  else {\n    local_2a = 0;\n    local_70[0] = 0;\n    *local_48 = 0;\n    local_70[3] = 100;\n    *local_3c[0] = 0;\n    local_44 = 0;\n    puVar16 = auStack_80;\n    do {\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    } while (*(int *)(puVar16 + 0x1c) != -1);\n    uVar14 = *(uint *)(param_1 + 300);\nLAB_00039e5f:\n    puVar17 = *(undefined1 **)(puVar16 + 0x44);\n    unaff_retaddr[0x158] = 1;\n    *puVar17 = 1;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }\n    puVar17 = puVar16 + 0x48;\nLAB_00039ea1:\n    *(undefined1 **)(puVar16 + -0x10) = puVar17;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39eaa;\n    FUN_0001ab40();\n    uVar9 = *(undefined4 *)(puVar16 + 0x48);\n    iVar13 = *(int *)(puVar16 + 0x20);\n    puVar15 = puVar16 + -4;\n    *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n    *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n    puVar4 = (undefined4 *)(puVar16 + -4);\n    if (*(int *)(puVar16 + 0x1c) == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    puVar4 = *(undefined4 **)(param_1 + 0x9c);\n    if (puVar4 != (undefined4 *)0x0) {\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }\n    puVar4 = *(undefined4 **)(param_1 + 0xa8);\n    if (puVar4 == (undefined4 *)0x0) goto LAB_00039c69;\n    uVar9 = *(undefined4 *)(param_1 + 0xb8);\n    *puVar4 = *(undefined4 *)(param_1 + 0xb4);\n    puVar4[1] = uVar9;\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39f0e;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }\n  if (iVar13 == 0) {\n    *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n    *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n    *(int *)(puVar16 + -0x10) = param_1;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39c90;\n    iVar13 = FUN_00033f20();\n    if (iVar13 != 0) goto LAB_00039d70;\n    if (*(int *)(param_1 + 300) == 0) {\n      if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a48c;\n      iVar10 = FUN_0001cc10();\n      if (iVar10 != 0) goto LAB_00039f19;\n    }\n    else {\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }\n    *(bool *)*(undefined4 *)(puVar16 + 0x38) = (*(byte *)(param_1 + 300) & 0x33) == 0;\n  }\n  else {\nLAB_00039f19:\n    iVar13 = 0x2a;\n  }\nLAB_00039d70:\n  if (*(int *)(puVar16 + 0x5c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar13;\n  }\n                    \n  *(undefined4 *)(puVar16 + -4) = 0x3ad7f;\n  FUN_0007c1a0();\n}" (primitive_type "int") (function_declarator "FUN_00039860(int param_1,undefined1 *param_2,undefined1 *param_3)" (identifier "FUN_00039860") (parameter_list "(int param_1,undefined1 *param_2,undefined1 *param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined1 *param_2" (type_identifier "undefined1") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined1 *param_3" (type_identifier "undefined1") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  uint *puVar1;\n  uint uVar2;\n  code *pcVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  char *pcVar6;\n  char cVar7;\n  uint uVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  uint uVar14;\n  int unaff_EBX;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  undefined1 *puVar17;\n  int in_GS_OFFSET;\n  bool bVar18;\n  int *unaff_retaddr;\n  int aiStackY_a4 [5];\n  undefined4 uStack_84;\n  undefined1 auStack_80 [8];\n  uint local_78;\n  uint local_70 [10];\n  undefined1 *local_48;\n  undefined4 local_44;\n  undefined1 *local_3c [4];\n  undefined1 local_2a;\n  undefined4 local_28 [5];\n  undefined4 uStack_14;\n  \n  iVar13 = -1;\n  uStack_14 = 0x3986e;\n  entry();\n  local_48 = param_2;\n  local_3c[0] = param_3;\n  local_28[1] = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  local_70[5] = param_1 + 0x94;\n  local_78 = unaff_retaddr[0x158];\n  unaff_retaddr[0x158] = 0;\n  if ((*(uint *)(param_1 + 300) & 0x15) == 1) {\n    iVar13 = unaff_retaddr[0xa5];\n  }\n  iVar10 = -1;\n  if ((*(uint *)(param_1 + 300) & 0x2a) == 2) {\n    iVar10 = unaff_retaddr[0xa6];\n  }\n  if (*(int *)(*unaff_retaddr + 0xed4) == 0) {\n    if (local_78 == 0) {\n      uStack_84 = 0;\n      local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);\n    }\n  }\n  else {\n    local_78 = local_78 | 1;\n  }\n  puVar16 = auStack_80;\n  if (local_78 == 4) {\n    iVar13 = 0x37;\n    FUN_00027240(param_1,unaff_EBX + 0x47047);\n    goto LAB_00039d70;\n  }\n  local_70[4] = *(uint *)(param_1 + 300) & 1;\n  if ((local_70[4] == 0) ||\n     (((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0')))) {\n    if (((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }\n      iVar13 = *(int *)(param_1 + 0x13c);\n      if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }\nLAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n      *(undefined4 *)(puVar16 + -0x14) = 0x39c18;\n      FUN_0001ab40();\n      uVar9 = *(undefined4 *)(puVar16 + 0x48);\n      iVar13 = *(int *)(puVar16 + 0x20);\n      puVar15 = puVar16 + -4;\n      *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n      *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n      goto LAB_00039ecb;\n    }\n    FUN_0001ab40(local_3c + 1);\n    *(undefined1 **)(param_1 + 0xcc) = local_3c[0];\n    *(undefined1 **)(param_1 + 0xd0) = local_3c[1];\n    puVar4 = &uStack_84;\nLAB_00039c5c:\n    puVar15 = (undefined1 *)puVar4;\n    if (*(int *)(param_1 + 0x110) == 1) {\n      iVar13 = *(int *)(puVar15 + 0x24);\n      *(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);\n      *(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);\n      *(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);\n      *(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);\n      *(undefined4 *)(puVar15 + -0x14) = 0x3a775;\n      iVar13 = FUN_0001abe0();\n      if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }\n    }\nLAB_00039c69:\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39c72;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }\n  else {\n    local_2a = 0;\n    local_70[0] = 0;\n    *local_48 = 0;\n    local_70[3] = 100;\n    *local_3c[0] = 0;\n    local_44 = 0;\n    puVar16 = auStack_80;\n    do {\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    } while (*(int *)(puVar16 + 0x1c) != -1);\n    uVar14 = *(uint *)(param_1 + 300);\nLAB_00039e5f:\n    puVar17 = *(undefined1 **)(puVar16 + 0x44);\n    unaff_retaddr[0x158] = 1;\n    *puVar17 = 1;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }\n    puVar17 = puVar16 + 0x48;\nLAB_00039ea1:\n    *(undefined1 **)(puVar16 + -0x10) = puVar17;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39eaa;\n    FUN_0001ab40();\n    uVar9 = *(undefined4 *)(puVar16 + 0x48);\n    iVar13 = *(int *)(puVar16 + 0x20);\n    puVar15 = puVar16 + -4;\n    *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n    *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n    puVar4 = (undefined4 *)(puVar16 + -4);\n    if (*(int *)(puVar16 + 0x1c) == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    puVar4 = *(undefined4 **)(param_1 + 0x9c);\n    if (puVar4 != (undefined4 *)0x0) {\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }\n    puVar4 = *(undefined4 **)(param_1 + 0xa8);\n    if (puVar4 == (undefined4 *)0x0) goto LAB_00039c69;\n    uVar9 = *(undefined4 *)(param_1 + 0xb8);\n    *puVar4 = *(undefined4 *)(param_1 + 0xb4);\n    puVar4[1] = uVar9;\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39f0e;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }\n  if (iVar13 == 0) {\n    *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n    *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n    *(int *)(puVar16 + -0x10) = param_1;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39c90;\n    iVar13 = FUN_00033f20();\n    if (iVar13 != 0) goto LAB_00039d70;\n    if (*(int *)(param_1 + 300) == 0) {\n      if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a48c;\n      iVar10 = FUN_0001cc10();\n      if (iVar10 != 0) goto LAB_00039f19;\n    }\n    else {\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }\n    *(bool *)*(undefined4 *)(puVar16 + 0x38) = (*(byte *)(param_1 + 300) & 0x33) == 0;\n  }\n  else {\nLAB_00039f19:\n    iVar13 = 0x2a;\n  }\nLAB_00039d70:\n  if (*(int *)(puVar16 + 0x5c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar13;\n  }\n                    \n  *(undefined4 *)(puVar16 + -4) = 0x3ad7f;\n  FUN_0007c1a0();\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "code *pcVar3;" (type_identifier "code") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "char cVar7;" (primitive_type "char") (identifier "cVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "int unaff_EBX;" (primitive_type "int") (identifier "unaff_EBX") (; ";")) (declaration "undefined1 *puVar15;" (type_identifier "undefined1") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "undefined1 *puVar16;" (type_identifier "undefined1") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "undefined1 *puVar17;" (type_identifier "undefined1") (pointer_declarator "*puVar17" (* "*") (identifier "puVar17")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar18;" (primitive_type "bool") (identifier "bVar18") (; ";")) (declaration "int *unaff_retaddr;" (primitive_type "int") (pointer_declarator "*unaff_retaddr" (* "*") (identifier "unaff_retaddr")) (; ";")) (declaration "int aiStackY_a4 [5];" (primitive_type "int") (array_declarator "aiStackY_a4 [5]" (identifier "aiStackY_a4") ([ "[") (number_literal "5") (] "]")) (; ";")) (declaration "undefined4 uStack_84;" (type_identifier "undefined4") (identifier "uStack_84") (; ";")) (declaration "undefined1 auStack_80 [8];" (type_identifier "undefined1") (array_declarator "auStack_80 [8]" (identifier "auStack_80") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "uint local_78;" (type_identifier "uint") (identifier "local_78") (; ";")) (declaration "uint local_70 [10];" (type_identifier "uint") (array_declarator "local_70 [10]" (identifier "local_70") ([ "[") (number_literal "10") (] "]")) (; ";")) (declaration "undefined1 *local_48;" (type_identifier "undefined1") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (declaration "undefined4 local_44;" (type_identifier "undefined4") (identifier "local_44") (; ";")) (declaration "undefined1 *local_3c [4];" (type_identifier "undefined1") (pointer_declarator "*local_3c [4]" (* "*") (array_declarator "local_3c [4]" (identifier "local_3c") ([ "[") (number_literal "4") (] "]"))) (; ";")) (declaration "undefined1 local_2a;" (type_identifier "undefined1") (identifier "local_2a") (; ";")) (declaration "undefined4 local_28 [5];" (type_identifier "undefined4") (array_declarator "local_28 [5]" (identifier "local_28") ([ "[") (number_literal "5") (] "]")) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "iVar13 = -1;" (assignment_expression "iVar13 = -1" (identifier "iVar13") (= "=") (number_literal "-1")) (; ";")) (expression_statement "uStack_14 = 0x3986e;" (assignment_expression "uStack_14 = 0x3986e" (identifier "uStack_14") (= "=") (number_literal "0x3986e")) (; ";")) (expression_statement "entry();" (call_expression "entry()" (identifier "entry") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_48 = param_2;" (assignment_expression "local_48 = param_2" (identifier "local_48") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_3c[0] = param_3;" (assignment_expression "local_3c[0] = param_3" (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_28[1] = *(undefined4 *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_28[1] = *(undefined4 *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_28[1]" (identifier "local_28") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*(undefined4 *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(undefined4 *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (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_70[5] = param_1 + 0x94;" (assignment_expression "local_70[5] = param_1 + 0x94" (subscript_expression "local_70[5]" (identifier "local_70") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "param_1 + 0x94" (identifier "param_1") (+ "+") (number_literal "0x94"))) (; ";")) (expression_statement "local_78 = unaff_retaddr[0x158];" (assignment_expression "local_78 = unaff_retaddr[0x158]" (identifier "local_78") (= "=") (subscript_expression "unaff_retaddr[0x158]" (identifier "unaff_retaddr") ([ "[") (number_literal "0x158") (] "]"))) (; ";")) (expression_statement "unaff_retaddr[0x158] = 0;" (assignment_expression "unaff_retaddr[0x158] = 0" (subscript_expression "unaff_retaddr[0x158]" (identifier "unaff_retaddr") ([ "[") (number_literal "0x158") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((*(uint *)(param_1 + 300) & 0x15) == 1) {\n    iVar13 = unaff_retaddr[0xa5];\n  }" (if "if") (parenthesized_expression "((*(uint *)(param_1 + 300) & 0x15) == 1)" (( "(") (binary_expression "(*(uint *)(param_1 + 300) & 0x15) == 1" (parenthesized_expression "(*(uint *)(param_1 + 300) & 0x15)" (( "(") (binary_expression "*(uint *)(param_1 + 300) & 0x15" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (& "&") (number_literal "0x15")) () ")")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    iVar13 = unaff_retaddr[0xa5];\n  }" ({ "{") (expression_statement "iVar13 = unaff_retaddr[0xa5];" (assignment_expression "iVar13 = unaff_retaddr[0xa5]" (identifier "iVar13") (= "=") (subscript_expression "unaff_retaddr[0xa5]" (identifier "unaff_retaddr") ([ "[") (number_literal "0xa5") (] "]"))) (; ";")) (} "}"))) (expression_statement "iVar10 = -1;" (assignment_expression "iVar10 = -1" (identifier "iVar10") (= "=") (number_literal "-1")) (; ";")) (if_statement "if ((*(uint *)(param_1 + 300) & 0x2a) == 2) {\n    iVar10 = unaff_retaddr[0xa6];\n  }" (if "if") (parenthesized_expression "((*(uint *)(param_1 + 300) & 0x2a) == 2)" (( "(") (binary_expression "(*(uint *)(param_1 + 300) & 0x2a) == 2" (parenthesized_expression "(*(uint *)(param_1 + 300) & 0x2a)" (( "(") (binary_expression "*(uint *)(param_1 + 300) & 0x2a" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (& "&") (number_literal "0x2a")) () ")")) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    iVar10 = unaff_retaddr[0xa6];\n  }" ({ "{") (expression_statement "iVar10 = unaff_retaddr[0xa6];" (assignment_expression "iVar10 = unaff_retaddr[0xa6]" (identifier "iVar10") (= "=") (subscript_expression "unaff_retaddr[0xa6]" (identifier "unaff_retaddr") ([ "[") (number_literal "0xa6") (] "]"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(*unaff_retaddr + 0xed4) == 0) {\n    if (local_78 == 0) {\n      uStack_84 = 0;\n      local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);\n    }\n  }\n  else {\n    local_78 = local_78 | 1;\n  }" (if "if") (parenthesized_expression "(*(int *)(*unaff_retaddr + 0xed4) == 0)" (( "(") (binary_expression "*(int *)(*unaff_retaddr + 0xed4) == 0" (pointer_expression "*(int *)(*unaff_retaddr + 0xed4)" (* "*") (cast_expression "(int *)(*unaff_retaddr + 0xed4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*unaff_retaddr + 0xed4)" (( "(") (binary_expression "*unaff_retaddr + 0xed4" (pointer_expression "*unaff_retaddr" (* "*") (identifier "unaff_retaddr")) (+ "+") (number_literal "0xed4")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (local_78 == 0) {\n      uStack_84 = 0;\n      local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);\n    }\n  }" ({ "{") (if_statement "if (local_78 == 0) {\n      uStack_84 = 0;\n      local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);\n    }" (if "if") (parenthesized_expression "(local_78 == 0)" (( "(") (binary_expression "local_78 == 0" (identifier "local_78") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uStack_84 = 0;\n      local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);\n    }" ({ "{") (expression_statement "uStack_84 = 0;" (assignment_expression "uStack_84 = 0" (identifier "uStack_84") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);" (assignment_expression "local_78 = FUN_00049010(iVar13,0xffffffff,iVar10)" (identifier "local_78") (= "=") (call_expression "FUN_00049010(iVar13,0xffffffff,iVar10)" (identifier "FUN_00049010") (argument_list "(iVar13,0xffffffff,iVar10)" (( "(") (identifier "iVar13") (, ",") (number_literal "0xffffffff") (, ",") (identifier "iVar10") () ")")))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    local_78 = local_78 | 1;\n  }" (else "else") (compound_statement "{\n    local_78 = local_78 | 1;\n  }" ({ "{") (expression_statement "local_78 = local_78 | 1;" (assignment_expression "local_78 = local_78 | 1" (identifier "local_78") (= "=") (binary_expression "local_78 | 1" (identifier "local_78") (| "|") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "puVar16 = auStack_80;" (assignment_expression "puVar16 = auStack_80" (identifier "puVar16") (= "=") (identifier "auStack_80")) (; ";")) (if_statement "if (local_78 == 4) {\n    iVar13 = 0x37;\n    FUN_00027240(param_1,unaff_EBX + 0x47047);\n    goto LAB_00039d70;\n  }" (if "if") (parenthesized_expression "(local_78 == 4)" (( "(") (binary_expression "local_78 == 4" (identifier "local_78") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n    iVar13 = 0x37;\n    FUN_00027240(param_1,unaff_EBX + 0x47047);\n    goto LAB_00039d70;\n  }" ({ "{") (expression_statement "iVar13 = 0x37;" (assignment_expression "iVar13 = 0x37" (identifier "iVar13") (= "=") (number_literal "0x37")) (; ";")) (expression_statement "FUN_00027240(param_1,unaff_EBX + 0x47047);" (call_expression "FUN_00027240(param_1,unaff_EBX + 0x47047)" (identifier "FUN_00027240") (argument_list "(param_1,unaff_EBX + 0x47047)" (( "(") (identifier "param_1") (, ",") (binary_expression "unaff_EBX + 0x47047" (identifier "unaff_EBX") (+ "+") (number_literal "0x47047")) () ")"))) (; ";")) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";")) (} "}"))) (expression_statement "local_70[4] = *(uint *)(param_1 + 300) & 1;" (assignment_expression "local_70[4] = *(uint *)(param_1 + 300) & 1" (subscript_expression "local_70[4]" (identifier "local_70") ([ "[") (number_literal "4") (] "]")) (= "=") (binary_expression "*(uint *)(param_1 + 300) & 1" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (& "&") (number_literal "1"))) (; ";")) (if_statement "if ((local_70[4] == 0) ||\n     (((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0')))) {\n    if (((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }\n      iVar13 = *(int *)(param_1 + 0x13c);\n      if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }\nLAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n      *(undefined4 *)(puVar16 + -0x14) = 0x39c18;\n      FUN_0001ab40();\n      uVar9 = *(undefined4 *)(puVar16 + 0x48);\n      iVar13 = *(int *)(puVar16 + 0x20);\n      puVar15 = puVar16 + -4;\n      *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n      *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n      goto LAB_00039ecb;\n    }\n    FUN_0001ab40(local_3c + 1);\n    *(undefined1 **)(param_1 + 0xcc) = local_3c[0];\n    *(undefined1 **)(param_1 + 0xd0) = local_3c[1];\n    puVar4 = &uStack_84;\nLAB_00039c5c:\n    puVar15 = (undefined1 *)puVar4;\n    if (*(int *)(param_1 + 0x110) == 1) {\n      iVar13 = *(int *)(puVar15 + 0x24);\n      *(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);\n      *(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);\n      *(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);\n      *(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);\n      *(undefined4 *)(puVar15 + -0x14) = 0x3a775;\n      iVar13 = FUN_0001abe0();\n      if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }\n    }\nLAB_00039c69:\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39c72;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }\n  else {\n    local_2a = 0;\n    local_70[0] = 0;\n    *local_48 = 0;\n    local_70[3] = 100;\n    *local_3c[0] = 0;\n    local_44 = 0;\n    puVar16 = auStack_80;\n    do {\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    } while (*(int *)(puVar16 + 0x1c) != -1);\n    uVar14 = *(uint *)(param_1 + 300);\nLAB_00039e5f:\n    puVar17 = *(undefined1 **)(puVar16 + 0x44);\n    unaff_retaddr[0x158] = 1;\n    *puVar17 = 1;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }\n    puVar17 = puVar16 + 0x48;\nLAB_00039ea1:\n    *(undefined1 **)(puVar16 + -0x10) = puVar17;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39eaa;\n    FUN_0001ab40();\n    uVar9 = *(undefined4 *)(puVar16 + 0x48);\n    iVar13 = *(int *)(puVar16 + 0x20);\n    puVar15 = puVar16 + -4;\n    *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n    *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n    puVar4 = (undefined4 *)(puVar16 + -4);\n    if (*(int *)(puVar16 + 0x1c) == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    puVar4 = *(undefined4 **)(param_1 + 0x9c);\n    if (puVar4 != (undefined4 *)0x0) {\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }\n    puVar4 = *(undefined4 **)(param_1 + 0xa8);\n    if (puVar4 == (undefined4 *)0x0) goto LAB_00039c69;\n    uVar9 = *(undefined4 *)(param_1 + 0xb8);\n    *puVar4 = *(undefined4 *)(param_1 + 0xb4);\n    puVar4[1] = uVar9;\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39f0e;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }" (if "if") (parenthesized_expression "((local_70[4] == 0) ||\n     (((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0'))))" (( "(") (binary_expression "(local_70[4] == 0) ||\n     (((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0')))" (parenthesized_expression "(local_70[4] == 0)" (( "(") (binary_expression "local_70[4] == 0" (subscript_expression "local_70[4]" (identifier "local_70") ([ "[") (number_literal "4") (] "]")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0')))" (( "(") (parenthesized_expression "((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0'))" (( "(") (binary_expression "(local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0')" (binary_expression "(local_78 & 1) == 0" (parenthesized_expression "(local_78 & 1)" (( "(") (binary_expression "local_78 & 1" (identifier "local_78") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "(*(char *)((int)unaff_retaddr + 0x261) == '\0')" (( "(") (binary_expression "*(char *)((int)unaff_retaddr + 0x261) == '\0'" (pointer_expression "*(char *)((int)unaff_retaddr + 0x261)" (* "*") (cast_expression "(char *)((int)unaff_retaddr + 0x261)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_retaddr + 0x261)" (( "(") (binary_expression "(int)unaff_retaddr + 0x261" (cast_expression "(int)unaff_retaddr" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_retaddr")) (+ "+") (number_literal "0x261")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    if (((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }\n      iVar13 = *(int *)(param_1 + 0x13c);\n      if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }\nLAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n      *(undefined4 *)(puVar16 + -0x14) = 0x39c18;\n      FUN_0001ab40();\n      uVar9 = *(undefined4 *)(puVar16 + 0x48);\n      iVar13 = *(int *)(puVar16 + 0x20);\n      puVar15 = puVar16 + -4;\n      *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n      *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n      goto LAB_00039ecb;\n    }\n    FUN_0001ab40(local_3c + 1);\n    *(undefined1 **)(param_1 + 0xcc) = local_3c[0];\n    *(undefined1 **)(param_1 + 0xd0) = local_3c[1];\n    puVar4 = &uStack_84;\nLAB_00039c5c:\n    puVar15 = (undefined1 *)puVar4;\n    if (*(int *)(param_1 + 0x110) == 1) {\n      iVar13 = *(int *)(puVar15 + 0x24);\n      *(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);\n      *(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);\n      *(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);\n      *(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);\n      *(undefined4 *)(puVar15 + -0x14) = 0x3a775;\n      iVar13 = FUN_0001abe0();\n      if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }\n    }\nLAB_00039c69:\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39c72;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }" ({ "{") (if_statement "if (((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)) {\nLAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }\n      iVar13 = *(int *)(param_1 + 0x13c);\n      if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }\nLAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n      *(undefined4 *)(puVar16 + -0x14) = 0x39c18;\n      FUN_0001ab40();\n      uVar9 = *(undefined4 *)(puVar16 + 0x48);\n      iVar13 = *(int *)(puVar16 + 0x20);\n      puVar15 = puVar16 + -4;\n      *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n      *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n      goto LAB_00039ecb;\n    }" (if "if") (parenthesized_expression "(((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0))" (( "(") (binary_expression "((*(uint *)(param_1 + 300) & 2) != 0) &&\n       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)" (parenthesized_expression "((*(uint *)(param_1 + 300) & 2) != 0)" (( "(") (binary_expression "(*(uint *)(param_1 + 300) & 2) != 0" (parenthesized_expression "(*(uint *)(param_1 + 300) & 2)" (( "(") (binary_expression "*(uint *)(param_1 + 300) & 2" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)" (( "(") (comma_expression "local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0" (assignment_expression "local_70[4] = 0" (subscript_expression "local_70[4]" (identifier "local_70") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (, ",") (comma_expression "puVar16 = auStack_80, (local_78 & 2) != 0" (assignment_expression "puVar16 = auStack_80" (identifier "puVar16") (= "=") (identifier "auStack_80")) (, ",") (binary_expression "(local_78 & 2) != 0" (parenthesized_expression "(local_78 & 2)" (( "(") (binary_expression "local_78 & 2" (identifier "local_78") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\nLAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }\n      iVar13 = *(int *)(param_1 + 0x13c);\n      if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }\nLAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n      *(undefined4 *)(puVar16 + -0x14) = 0x39c18;\n      FUN_0001ab40();\n      uVar9 = *(undefined4 *)(puVar16 + 0x48);\n      iVar13 = *(int *)(puVar16 + 0x20);\n      puVar15 = puVar16 + -4;\n      *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n      *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n      goto LAB_00039ecb;\n    }" ({ "{") (labeled_statement "LAB_00039b2b:\n      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }" (statement_identifier "LAB_00039b2b") (: ":") (if_statement "if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }" (if "if") (parenthesized_expression "((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0))" (( "(") (binary_expression "(*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)" (parenthesized_expression "(*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0" (binary_expression "*(int *)(param_1 + 0xb0) == 0" (pointer_expression "*(int *)(param_1 + 0xb0)" (* "*") (cast_expression "(int *)(param_1 + 0xb0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")")))) (== "==") (number_literal "0")) (&& "&&") (binary_expression "*(int *)(param_1 + 0xac) == 0" (pointer_expression "*(int *)(param_1 + 0xac)" (* "*") (cast_expression "(int *)(param_1 + 0xac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xac)" (( "(") (binary_expression "param_1 + 0xac" (identifier "param_1") (+ "+") (number_literal "0xac")) () ")")))) (== "==") (number_literal "0"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0" (binary_expression "*(int *)(param_1 + 0xb8) == 0" (pointer_expression "*(int *)(param_1 + 0xb8)" (* "*") (cast_expression "(int *)(param_1 + 0xb8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb8)" (( "(") (binary_expression "param_1 + 0xb8" (identifier "param_1") (+ "+") (number_literal "0xb8")) () ")")))) (== "==") (number_literal "0")) (&& "&&") (binary_expression "*(int *)(param_1 + 0xb4) == 0" (pointer_expression "*(int *)(param_1 + 0xb4)" (* "*") (cast_expression "(int *)(param_1 + 0xb4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb4)" (( "(") (binary_expression "param_1 + 0xb4" (identifier "param_1") (+ "+") (number_literal "0xb4")) () ")")))) (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        *(undefined4 *)(puVar16 + -0xc) = 7;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;\n        FUN_0001c710();\n      }" ({ "{") (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 7;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 7" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "7")) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a3ed" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a3ed")) (; ";")) (expression_statement "FUN_0001c710();" (call_expression "FUN_0001c710()" (identifier "FUN_0001c710") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar13 = *(int *)(param_1 + 0x13c);" (assignment_expression "iVar13 = *(int *)(param_1 + 0x13c)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(param_1 + 0x13c)" (* "*") (cast_expression "(int *)(param_1 + 0x13c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x13c)" (( "(") (binary_expression "param_1 + 0x13c" (identifier "param_1") (+ "+") (number_literal "0x13c")) () ")"))))) (; ";")) (if_statement "if (iVar13 == 0) {\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }\n      else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        *(undefined4 *)(puVar16 + 8) = 0;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;\n        iVar13 = FUN_00039100();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar9 = *(undefined4 *)(puVar16 + 8);\n        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n        if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }\n        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;\n        FUN_000647d0();\n        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }\n      }" ({ "{") (expression_statement "*(undefined4 *)(puVar16 + 8) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + 8) = 0" (pointer_expression "*(undefined4 *)(puVar16 + 8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a5fd" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a5fd")) (; ";")) (expression_statement "iVar13 = FUN_00039100();" (assignment_expression "iVar13 = FUN_00039100()" (identifier "iVar13") (= "=") (call_expression "FUN_00039100()" (identifier "FUN_00039100") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";"))) (expression_statement "uVar9 = *(undefined4 *)(puVar16 + 8);" (assignment_expression "uVar9 = *(undefined4 *)(puVar16 + 8)" (identifier "uVar9") (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);" (assignment_expression "*(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c)" (pointer_expression "*(undefined4 *)(param_1 + 0x140)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x140)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xc6c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc6c)" (( "(") (binary_expression "param_1 + 0xc6c" (identifier "param_1") (+ "+") (number_literal "0xc6c")) () ")"))))) (; ";")) (if_statement "if (*(char *)(param_1 + 0x130) == '\0') {\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }\n        else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x130) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x130) == '\0'" (pointer_expression "*(char *)(param_1 + 0x130)" (* "*") (cast_expression "(char *)(param_1 + 0x130)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x130)" (( "(") (binary_expression "param_1 + 0x130" (identifier "param_1") (+ "+") (number_literal "0x130")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }\n          bVar18 = false;\n          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }\n          *(undefined4 *)(puVar16 + 0x20) = uVar9;\n          puVar16[0x1c] = bVar18;\n          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;\n          iVar13 = FUN_00039150();\n          if (iVar13 != 0) goto LAB_00039d70;\n          iVar13 = *(int *)(puVar16 + 0x58);\n          cVar7 = puVar16[0x1c];\n          iVar10 = *(int *)(puVar16 + 0x20);\n          *(int *)(puVar16 + 0x10) = iVar13;\n          if (iVar13 == 0) goto LAB_0003a898;\n          if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }\n          uVar14 = *(uint *)(param_1 + 300);\n        }" ({ "{") (if_statement "if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             ) {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }" (if "if") (parenthesized_expression "((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)\n             )" (( "(") (binary_expression "(*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)" (parenthesized_expression "(*(int *)(param_1 + 0x110) == 2)" (( "(") (binary_expression "*(int *)(param_1 + 0x110) == 2" (pointer_expression "*(int *)(param_1 + 0x110)" (* "*") (cast_expression "(int *)(param_1 + 0x110)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")")))) (== "==") (number_literal "2")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)" (( "(") (binary_expression "*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2" (pointer_expression "*(int *)(*(int *)(param_1 + 0x148) + 0x1a0)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x148) + 0x1a0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x148) + 0x1a0)" (( "(") (binary_expression "*(int *)(param_1 + 0x148) + 0x1a0" (pointer_expression "*(int *)(param_1 + 0x148)" (* "*") (cast_expression "(int *)(param_1 + 0x148)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x148)" (( "(") (binary_expression "param_1 + 0x148" (identifier "param_1") (+ "+") (number_literal "0x148")) () ")")))) (+ "+") (number_literal "0x1a0")) () ")")))) (== "==") (number_literal "2")) () ")"))) () ")")) (compound_statement "{\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            puVar17 = puVar16 + 0x48;\n            *(undefined4 *)(param_1 + 0x110) = 1;\n            *(undefined1 **)(puVar16 + -0x10) = puVar17;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;\n            FUN_0001ab40();\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n            *(undefined4 *)(puVar16 + -0x1c) = 0;\n            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);\n            *(int *)(puVar16 + -0x24) = param_1;\n            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;\n            FUN_00043260();\n            puVar16 = puVar16 + -4;\n            goto LAB_00039ea1;\n          }" ({ "{") (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (= "=") (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffd" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (& "&") (number_literal "0xfffffffd"))) (; ";")) (expression_statement "puVar17 = puVar16 + 0x48;" (assignment_expression "puVar17 = puVar16 + 0x48" (identifier "puVar17") (= "=") (binary_expression "puVar16 + 0x48" (identifier "puVar16") (+ "+") (number_literal "0x48"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x110) = 1;" (assignment_expression "*(undefined4 *)(param_1 + 0x110) = 1" (pointer_expression "*(undefined4 *)(param_1 + 0x110)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x110)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined1 **)(puVar16 + -0x10) = puVar17;" (assignment_expression "*(undefined1 **)(puVar16 + -0x10) = puVar17" (pointer_expression "*(undefined1 **)(puVar16 + -0x10)" (* "*") (cast_expression "(undefined1 **)(puVar16 + -0x10)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "puVar17")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ac2f" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3ac2f")) (; ";")) (expression_statement "FUN_0001ab40();" (call_expression "FUN_0001ab40()" (identifier "FUN_0001ab40") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar9 = *(undefined4 *)(puVar16 + 0x48);" (assignment_expression "uVar9 = *(undefined4 *)(puVar16 + 0x48)" (identifier "uVar9") (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x48)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x48)" (( "(") (binary_expression "puVar16 + 0x48" (identifier "puVar16") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "iVar13 = *(int *)(puVar16 + 0x20);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x20)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(puVar16 + 0x20)" (* "*") (cast_expression "(int *)(puVar16 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x20)" (( "(") (binary_expression "puVar16 + 0x20" (identifier "puVar16") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);" (assignment_expression "*(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44)" (pointer_expression "*(undefined4 *)(iVar13 + 0x74)" (* "*") (cast_expression "(undefined4 *)(iVar13 + 0x74)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x74)" (( "(") (binary_expression "iVar13 + 0x74" (identifier "iVar13") (+ "+") (number_literal "0x74")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x44)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x44)" (( "(") (binary_expression "puVar16 + 0x44" (identifier "puVar16") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar13 + 0x78) = uVar9;" (assignment_expression "*(undefined4 *)(iVar13 + 0x78) = uVar9" (pointer_expression "*(undefined4 *)(iVar13 + 0x78)" (* "*") (cast_expression "(undefined4 *)(iVar13 + 0x78)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x78)" (( "(") (binary_expression "iVar13 + 0x78" (identifier "iVar13") (+ "+") (number_literal "0x78")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x1c) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + -0x1c) = 0" (pointer_expression "*(undefined4 *)(puVar16 + -0x1c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x1c)" (( "(") (binary_expression "puVar16 + -0x1c" (identifier "puVar16") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);" (assignment_expression "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8)" (pointer_expression "*(undefined4 *)(puVar16 + -0x20)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x20)" (( "(") (binary_expression "puVar16 + -0x20" (identifier "puVar16") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xad8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xad8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xad8)" (( "(") (binary_expression "param_1 + 0xad8" (identifier "param_1") (+ "+") (number_literal "0xad8")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x24) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x24) = param_1" (pointer_expression "*(int *)(puVar16 + -0x24)" (* "*") (cast_expression "(int *)(puVar16 + -0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x24)" (( "(") (binary_expression "puVar16 + -0x24" (identifier "puVar16") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x28) = 0x3ac52;" (assignment_expression "*(undefined4 *)(puVar16 + -0x28) = 0x3ac52" (pointer_expression "*(undefined4 *)(puVar16 + -0x28)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x28)" (( "(") (binary_expression "puVar16 + -0x28" (identifier "puVar16") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (number_literal "0x3ac52")) (; ";")) (expression_statement "FUN_00043260();" (call_expression "FUN_00043260()" (identifier "FUN_00043260") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar16 = puVar16 + -4;" (assignment_expression "puVar16 = puVar16 + -4" (identifier "puVar16") (= "=") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4"))) (; ";")) (goto_statement "goto LAB_00039ea1;" (goto "goto") (statement_identifier "LAB_00039ea1") (; ";")) (} "}"))) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" (identifier "bVar18") (= "=") (false "false")) (; ";")) (if_statement "if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }" (if "if") (parenthesized_expression "((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0)" (( "(") (binary_expression "(*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0" (parenthesized_expression "(*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003)" (( "(") (binary_expression "*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003" (pointer_expression "*(uint *)(unaff_retaddr[0x9f] + 0x40)" (* "*") (cast_expression "(uint *)(unaff_retaddr[0x9f] + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr[0x9f] + 0x40)" (( "(") (binary_expression "unaff_retaddr[0x9f] + 0x40" (subscript_expression "unaff_retaddr[0x9f]" (identifier "unaff_retaddr") ([ "[") (number_literal "0x9f") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (& "&") (number_literal "0x40003")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;\n          }" ({ "{") (expression_statement "bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;" (assignment_expression "bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1" (identifier "bVar18") (= "=") (binary_expression "*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1" (pointer_expression "*(int *)(*(int *)(param_1 + 0x148) + 0x1a0)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x148) + 0x1a0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x148) + 0x1a0)" (( "(") (binary_expression "*(int *)(param_1 + 0x148) + 0x1a0" (pointer_expression "*(int *)(param_1 + 0x148)" (* "*") (cast_expression "(int *)(param_1 + 0x148)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x148)" (( "(") (binary_expression "param_1 + 0x148" (identifier "param_1") (+ "+") (number_literal "0x148")) () ")")))) (+ "+") (number_literal "0x1a0")) () ")")))) (== "==") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(puVar16 + 0x20) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + 0x20) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + 0x20)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x20)" (( "(") (binary_expression "puVar16 + 0x20" (identifier "puVar16") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "puVar16[0x1c] = bVar18;" (assignment_expression "puVar16[0x1c] = bVar18" (subscript_expression "puVar16[0x1c]" (identifier "puVar16") ([ "[") (number_literal "0x1c") (] "]")) (= "=") (identifier "bVar18")) (; ";")) (expression_statement "*(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + 8) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + 8)" (* "*") (cast_expression "(undefined1 **)(puVar16 + 8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58"))) (; ";")) (expression_statement "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar16 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58"))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x8fc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x8fc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x8fc)" (( "(") (binary_expression "param_1 + 0x8fc" (identifier "param_1") (+ "+") (number_literal "0x8fc")) () ")"))))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a675;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a675" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a675")) (; ";")) (expression_statement "iVar13 = FUN_00039150();" (assignment_expression "iVar13 = FUN_00039150()" (identifier "iVar13") (= "=") (call_expression "FUN_00039150()" (identifier "FUN_00039150") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";"))) (expression_statement "iVar13 = *(int *)(puVar16 + 0x58);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x58)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(puVar16 + 0x58)" (* "*") (cast_expression "(int *)(puVar16 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "cVar7 = puVar16[0x1c];" (assignment_expression "cVar7 = puVar16[0x1c]" (identifier "cVar7") (= "=") (subscript_expression "puVar16[0x1c]" (identifier "puVar16") ([ "[") (number_literal "0x1c") (] "]"))) (; ";")) (expression_statement "iVar10 = *(int *)(puVar16 + 0x20);" (assignment_expression "iVar10 = *(int *)(puVar16 + 0x20)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(puVar16 + 0x20)" (* "*") (cast_expression "(int *)(puVar16 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x20)" (( "(") (binary_expression "puVar16 + 0x20" (identifier "puVar16") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar16 + 0x10) = iVar13;" (assignment_expression "*(int *)(puVar16 + 0x10) = iVar13" (pointer_expression "*(int *)(puVar16 + 0x10)" (* "*") (cast_expression "(int *)(puVar16 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar13")) (; ";")) (if_statement "if (iVar13 == 0) goto LAB_0003a898;" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0003a898;" (goto "goto") (statement_identifier "LAB_0003a898") (; ";"))) (if_statement "if (0 < iVar13) {\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }" (if "if") (parenthesized_expression "(0 < iVar13)" (( "(") (binary_expression "0 < iVar13" (number_literal "0") (< "<") (identifier "iVar13")) () ")")) (compound_statement "{\n            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);\n            if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n            iVar13 = *(int *)(param_1 + 0x13c);\n            goto LAB_00039b53;\n          }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);" (assignment_expression "*(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10)" (pointer_expression "*(undefined4 *)(param_1 + 0x13c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x13c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x13c)" (( "(") (binary_expression "param_1 + 0x13c" (identifier "param_1") (+ "+") (number_literal "0x13c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if ((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }" (if "if") (parenthesized_expression "((cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0'))))" (( "(") (binary_expression "(cVar7 == '\0') &&\n               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))" (parenthesized_expression "(cVar7 == '\0')" (( "(") (binary_expression "cVar7 == '\0'" (identifier "cVar7") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))" (( "(") (parenthesized_expression "(*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0'))" (( "(") (binary_expression "*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')" (binary_expression "*(char *)(param_1 + 0x927) != '\0'" (pointer_expression "*(char *)(param_1 + 0x927)" (* "*") (cast_expression "(char *)(param_1 + 0x927)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x927)" (( "(") (binary_expression "param_1 + 0x927" (identifier "param_1") (+ "+") (number_literal "0x927")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (|| "||") (parenthesized_expression "(*(char *)(param_1 + 0x7ea) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x7ea) != '\0'" (pointer_expression "*(char *)(param_1 + 0x7ea)" (* "*") (cast_expression "(char *)(param_1 + 0x7ea)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x7ea)" (( "(") (binary_expression "param_1 + 0x7ea" (identifier "param_1") (+ "+") (number_literal "0x7ea")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n              iVar13 = *(int *)(param_1 + 0xcb4);\n              if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }\n              iVar11 = 0;\n              *(int **)(puVar16 + 0x1c) = unaff_retaddr;\n              while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }\n              unaff_retaddr = *(int **)(puVar16 + 0x1c);\n              if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }\n            }" ({ "{") (expression_statement "iVar13 = *(int *)(param_1 + 0xcb4);" (assignment_expression "iVar13 = *(int *)(param_1 + 0xcb4)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(param_1 + 0xcb4)" (* "*") (cast_expression "(int *)(param_1 + 0xcb4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xcb4)" (( "(") (binary_expression "param_1 + 0xcb4" (identifier "param_1") (+ "+") (number_literal "0xcb4")) () ")"))))) (; ";")) (if_statement "if (iVar13 == 0) {\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                iVar13 = *(int *)(param_1 + 0x8fc);\n                *(int *)(puVar16 + 0x1c) = iVar10;\n                *(int *)(puVar16 + -0x10) = iVar13 * 2;\n                pcVar3 = *(code **)(unaff_EBX + 0x77802);\n                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;\n                iVar13 = (*pcVar3)();\n                iVar10 = *(int *)(puVar16 + 0x1c);\n                *(int *)(param_1 + 0xcb4) = iVar13;\n                if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }\n              }" ({ "{") (expression_statement "iVar13 = *(int *)(param_1 + 0x8fc);" (assignment_expression "iVar13 = *(int *)(param_1 + 0x8fc)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(param_1 + 0x8fc)" (* "*") (cast_expression "(int *)(param_1 + 0x8fc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x8fc)" (( "(") (binary_expression "param_1 + 0x8fc" (identifier "param_1") (+ "+") (number_literal "0x8fc")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar16 + 0x1c) = iVar10;" (assignment_expression "*(int *)(puVar16 + 0x1c) = iVar10" (pointer_expression "*(int *)(puVar16 + 0x1c)" (* "*") (cast_expression "(int *)(puVar16 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x1c)" (( "(") (binary_expression "puVar16 + 0x1c" (identifier "puVar16") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = iVar13 * 2;" (assignment_expression "*(int *)(puVar16 + -0x10) = iVar13 * 2" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "iVar13 * 2" (identifier "iVar13") (* "*") (number_literal "2"))) (; ";")) (expression_statement "pcVar3 = *(code **)(unaff_EBX + 0x77802);" (assignment_expression "pcVar3 = *(code **)(unaff_EBX + 0x77802)" (identifier "pcVar3") (= "=") (pointer_expression "*(code **)(unaff_EBX + 0x77802)" (* "*") (cast_expression "(code **)(unaff_EBX + 0x77802)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(unaff_EBX + 0x77802)" (( "(") (binary_expression "unaff_EBX + 0x77802" (identifier "unaff_EBX") (+ "+") (number_literal "0x77802")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ad10;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ad10" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3ad10")) (; ";")) (expression_statement "iVar13 = (*pcVar3)();" (assignment_expression "iVar13 = (*pcVar3)()" (identifier "iVar13") (= "=") (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar10 = *(int *)(puVar16 + 0x1c);" (assignment_expression "iVar10 = *(int *)(puVar16 + 0x1c)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(puVar16 + 0x1c)" (* "*") (cast_expression "(int *)(puVar16 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x1c)" (( "(") (binary_expression "puVar16 + 0x1c" (identifier "puVar16") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "*(int *)(param_1 + 0xcb4) = iVar13;" (assignment_expression "*(int *)(param_1 + 0xcb4) = iVar13" (pointer_expression "*(int *)(param_1 + 0xcb4)" (* "*") (cast_expression "(int *)(param_1 + 0xcb4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xcb4)" (( "(") (binary_expression "param_1 + 0xcb4" (identifier "param_1") (+ "+") (number_literal "0xcb4")) () ")")))) (= "=") (identifier "iVar13")) (; ";")) (if_statement "if (iVar13 == 0) {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  iVar13 = 0x1b;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;\n                  FUN_00027240();\n                  goto LAB_00039d70;\n                }" ({ "{") (expression_statement "*(int **)(puVar16 + -4) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -4) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -4)" (* "*") (cast_expression "(int **)(puVar16 + -4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "iVar13 = 0x1b;" (assignment_expression "iVar13 = 0x1b" (identifier "iVar13") (= "=") (number_literal "0x1b")) (; ";")) (expression_statement "*(int **)(puVar16 + -8) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -8) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -8)" (* "*") (cast_expression "(int **)(puVar16 + -8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566" (pointer_expression "*(int *)(puVar16 + -0xc)" (* "*") (cast_expression "(int *)(puVar16 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (binary_expression "unaff_EBX + 0x47566" (identifier "unaff_EBX") (+ "+") (number_literal "0x47566"))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ad39;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ad39" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3ad39")) (; ";")) (expression_statement "FUN_00027240();" (call_expression "FUN_00027240()" (identifier "FUN_00027240") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" (identifier "iVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int **)(puVar16 + 0x1c) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + 0x1c) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + 0x1c)" (* "*") (cast_expression "(int **)(puVar16 + 0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x1c)" (( "(") (binary_expression "puVar16 + 0x1c" (identifier "puVar16") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (while_statement "while( true ) {\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                iVar12 = iVar10 + 1;\n                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);\n                if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }\n                iVar11 = iVar11 + 1;\n                if (*(int *)(puVar16 + 0x10) == iVar11) break;\n                iVar13 = *(int *)(param_1 + 0xcb4);\n                iVar10 = iVar12;\n              }" ({ "{") (expression_statement "iVar12 = iVar10 + 1;" (assignment_expression "iVar12 = iVar10 + 1" (identifier "iVar12") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);" (assignment_expression "cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11)" (identifier "cVar7") (= "=") (pointer_expression "*(char *)(*(int *)(param_1 + 0x140) + iVar11)" (* "*") (cast_expression "(char *)(*(int *)(param_1 + 0x140) + iVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x140) + iVar11)" (( "(") (binary_expression "*(int *)(param_1 + 0x140) + iVar11" (pointer_expression "*(int *)(param_1 + 0x140)" (* "*") (cast_expression "(int *)(param_1 + 0x140)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")")))) (+ "+") (identifier "iVar11")) () ")"))))) (; ";")) (if_statement "if (cVar7 == '\n') {\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }\n                else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }" (if "if") (parenthesized_expression "(cVar7 == '\n')" (( "(") (binary_expression "cVar7 == '\n'" (identifier "cVar7") (== "==") (char_literal "'\n'" (' "'") (escape_sequence "\n") (' "'"))) () ")")) (compound_statement "{\n                  *(char *)(iVar13 + iVar10) = '\r';\n                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;\n                  iVar12 = iVar10 + 2;\n                  if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }\n                }" ({ "{") (expression_statement "*(char *)(iVar13 + iVar10) = '\r';" (assignment_expression "*(char *)(iVar13 + iVar10) = '\r'" (pointer_expression "*(char *)(iVar13 + iVar10)" (* "*") (cast_expression "(char *)(iVar13 + iVar10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + iVar10)" (( "(") (binary_expression "iVar13 + iVar10" (identifier "iVar13") (+ "+") (identifier "iVar10")) () ")")))) (= "=") (char_literal "'\r'" (' "'") (escape_sequence "\r") (' "'"))) (; ";")) (expression_statement "*(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;" (assignment_expression "*(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10" (pointer_expression "*(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10)" (* "*") (cast_expression "(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0xcb4) + 1 + iVar10)" (( "(") (binary_expression "*(int *)(param_1 + 0xcb4) + 1 + iVar10" (binary_expression "*(int *)(param_1 + 0xcb4) + 1" (pointer_expression "*(int *)(param_1 + 0xcb4)" (* "*") (cast_expression "(int *)(param_1 + 0xcb4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xcb4)" (( "(") (binary_expression "param_1 + 0xcb4" (identifier "param_1") (+ "+") (number_literal "0xcb4")) () ")")))) (+ "+") (number_literal "1")) (+ "+") (identifier "iVar10")) () ")")))) (= "=") (number_literal "10")) (; ";")) (expression_statement "iVar12 = iVar10 + 2;" (assignment_expression "iVar12 = iVar10 + 2" (identifier "iVar12") (= "=") (binary_expression "iVar10 + 2" (identifier "iVar10") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (*(char *)(param_1 + 0x7ea) == '\0') {\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x7ea) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x7ea) == '\0'" (pointer_expression "*(char *)(param_1 + 0x7ea)" (* "*") (cast_expression "(char *)(param_1 + 0x7ea)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x7ea)" (( "(") (binary_expression "param_1 + 0x7ea" (identifier "param_1") (+ "+") (number_literal "0x7ea")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                    uVar14 = *(uint *)(param_1 + 0xecc);\n                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }\n                  }" ({ "{") (expression_statement "uVar14 = *(uint *)(param_1 + 0xecc);" (assignment_expression "uVar14 = *(uint *)(param_1 + 0xecc)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(param_1 + 0xecc)" (* "*") (cast_expression "(uint *)(param_1 + 0xecc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xecc)" (( "(") (binary_expression "param_1 + 0xecc" (identifier "param_1") (+ "+") (number_literal "0xecc")) () ")"))))) (; ";")) (if_statement "if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }" (if "if") (parenthesized_expression "((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff)" (( "(") (binary_expression "(*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff" (parenthesized_expression "(*(uint *)(param_1 + 0xed0) & uVar14)" (( "(") (binary_expression "*(uint *)(param_1 + 0xed0) & uVar14" (pointer_expression "*(uint *)(param_1 + 0xed0)" (* "*") (cast_expression "(uint *)(param_1 + 0xed0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xed0)" (( "(") (binary_expression "param_1 + 0xed0" (identifier "param_1") (+ "+") (number_literal "0xed0")) () ")")))) (& "&") (identifier "uVar14")) () ")")) (!= "!=") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;\n                      *(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);\n                    }" ({ "{") (expression_statement "*(uint *)(param_1 + 0xecc) = uVar14 + 1;" (assignment_expression "*(uint *)(param_1 + 0xecc) = uVar14 + 1" (pointer_expression "*(uint *)(param_1 + 0xecc)" (* "*") (cast_expression "(uint *)(param_1 + 0xecc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xecc)" (( "(") (binary_expression "param_1 + 0xecc" (identifier "param_1") (+ "+") (number_literal "0xecc")) () ")")))) (= "=") (binary_expression "uVar14 + 1" (identifier "uVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);" (assignment_expression "*(uint *)(param_1 + 0xed0) =\n                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14)" (pointer_expression "*(uint *)(param_1 + 0xed0)" (* "*") (cast_expression "(uint *)(param_1 + 0xed0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xed0)" (( "(") (binary_expression "param_1 + 0xed0" (identifier "param_1") (+ "+") (number_literal "0xed0")) () ")")))) (= "=") (binary_expression "*(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14)" (pointer_expression "*(uint *)(param_1 + 0xed0)" (* "*") (cast_expression "(uint *)(param_1 + 0xed0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xed0)" (( "(") (binary_expression "param_1 + 0xed0" (identifier "param_1") (+ "+") (number_literal "0xed0")) () ")")))) (+ "+") (call_expression "(uint)(0xfffffffe < uVar14)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0xfffffffe < uVar14)" (( "(") (binary_expression "0xfffffffe < uVar14" (number_literal "0xfffffffe") (< "<") (identifier "uVar14")) () ")"))))) (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }" (else "else") (compound_statement "{\n                  *(char *)(iVar13 + iVar10) = cVar7;\n                }" ({ "{") (expression_statement "*(char *)(iVar13 + iVar10) = cVar7;" (assignment_expression "*(char *)(iVar13 + iVar10) = cVar7" (pointer_expression "*(char *)(iVar13 + iVar10)" (* "*") (cast_expression "(char *)(iVar13 + iVar10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + iVar10)" (( "(") (binary_expression "iVar13 + iVar10" (identifier "iVar13") (+ "+") (identifier "iVar10")) () ")")))) (= "=") (identifier "cVar7")) (; ";")) (} "}")))) (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" (identifier "iVar11") (= "=") (binary_expression "iVar11 + 1" (identifier "iVar11") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*(int *)(puVar16 + 0x10) == iVar11) break;" (if "if") (parenthesized_expression "(*(int *)(puVar16 + 0x10) == iVar11)" (( "(") (binary_expression "*(int *)(puVar16 + 0x10) == iVar11" (pointer_expression "*(int *)(puVar16 + 0x10)" (* "*") (cast_expression "(int *)(puVar16 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (identifier "iVar11")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar13 = *(int *)(param_1 + 0xcb4);" (assignment_expression "iVar13 = *(int *)(param_1 + 0xcb4)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(param_1 + 0xcb4)" (* "*") (cast_expression "(int *)(param_1 + 0xcb4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xcb4)" (( "(") (binary_expression "param_1 + 0xcb4" (identifier "param_1") (+ "+") (number_literal "0xcb4")) () ")"))))) (; ";")) (expression_statement "iVar10 = iVar12;" (assignment_expression "iVar10 = iVar12" (identifier "iVar10") (= "=") (identifier "iVar12")) (; ";")) (} "}"))) (expression_statement "unaff_retaddr = *(int **)(puVar16 + 0x1c);" (assignment_expression "unaff_retaddr = *(int **)(puVar16 + 0x1c)" (identifier "unaff_retaddr") (= "=") (pointer_expression "*(int **)(puVar16 + 0x1c)" (* "*") (cast_expression "(int **)(puVar16 + 0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x1c)" (( "(") (binary_expression "puVar16 + 0x1c" (identifier "puVar16") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (if_statement "if (*(int *)(puVar16 + 0x10) != iVar12) {\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }" (if "if") (parenthesized_expression "(*(int *)(puVar16 + 0x10) != iVar12)" (( "(") (binary_expression "*(int *)(puVar16 + 0x10) != iVar12" (pointer_expression "*(int *)(puVar16 + 0x10)" (* "*") (cast_expression "(int *)(puVar16 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (identifier "iVar12")) () ")")) (compound_statement "{\n                uVar9 = *(undefined4 *)(param_1 + 0xcb4);\n                *(int *)(param_1 + 0x13c) = iVar12;\n                *(int *)(puVar16 + 0x10) = iVar12;\n                *(undefined4 *)(param_1 + 0x140) = uVar9;\n              }" ({ "{") (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0xcb4);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0xcb4)" (identifier "uVar9") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xcb4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xcb4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xcb4)" (( "(") (binary_expression "param_1 + 0xcb4" (identifier "param_1") (+ "+") (number_literal "0xcb4")) () ")"))))) (; ";")) (expression_statement "*(int *)(param_1 + 0x13c) = iVar12;" (assignment_expression "*(int *)(param_1 + 0x13c) = iVar12" (pointer_expression "*(int *)(param_1 + 0x13c)" (* "*") (cast_expression "(int *)(param_1 + 0x13c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x13c)" (( "(") (binary_expression "param_1 + 0x13c" (identifier "param_1") (+ "+") (number_literal "0x13c")) () ")")))) (= "=") (identifier "iVar12")) (; ";")) (expression_statement "*(int *)(puVar16 + 0x10) = iVar12;" (assignment_expression "*(int *)(puVar16 + 0x10) = iVar12" (pointer_expression "*(int *)(puVar16 + 0x10)" (* "*") (cast_expression "(int *)(puVar16 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar12")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x140) = uVar9;" (assignment_expression "*(undefined4 *)(param_1 + 0x140) = uVar9" (pointer_expression "*(undefined4 *)(param_1 + 0x140)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x140)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (} "}"))) (} "}"))) (if_statement "if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }" (if "if") (parenthesized_expression "((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0)" (( "(") (binary_expression "(*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0" (parenthesized_expression "(*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000)" (( "(") (binary_expression "*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000" (pointer_expression "*(uint *)(unaff_retaddr[0x9f] + 0x40)" (* "*") (cast_expression "(uint *)(unaff_retaddr[0x9f] + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr[0x9f] + 0x40)" (( "(") (binary_expression "unaff_retaddr[0x9f] + 0x40" (subscript_expression "unaff_retaddr[0x9f]" (identifier "unaff_retaddr") ([ "[") (number_literal "0x9f") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (& "&") (number_literal "0x30000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;\n              iVar13 = FUN_00057f10();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }" ({ "{") (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ac67;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ac67" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3ac67")) (; ";")) (expression_statement "iVar13 = FUN_00057f10();" (assignment_expression "iVar13 = FUN_00057f10()" (identifier "iVar13") (= "=") (call_expression "FUN_00057f10()" (identifier "FUN_00057f10") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";"))) (} "}"))) (expression_statement "iVar13 = *(int *)(param_1 + 0x13c);" (assignment_expression "iVar13 = *(int *)(param_1 + 0x13c)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(param_1 + 0x13c)" (* "*") (cast_expression "(int *)(param_1 + 0x13c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x13c)" (( "(") (binary_expression "param_1 + 0x13c" (identifier "param_1") (+ "+") (number_literal "0x13c")) () ")"))))) (; ";")) (goto_statement "goto LAB_00039b53;" (goto "goto") (statement_identifier "LAB_00039b53") (; ";")) (} "}"))) (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }" (else "else") (compound_statement "{\nLAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);\n          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;\n        }" ({ "{") (labeled_statement "LAB_0003a898:\n          uVar14 = *(uint *)(param_1 + 300);" (statement_identifier "LAB_0003a898") (: ":") (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")"))))) (; ";"))) (if_statement "if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;" (if "if") (parenthesized_expression "((uVar14 & 0x20) != 0)" (( "(") (binary_expression "(uVar14 & 0x20) != 0" (parenthesized_expression "(uVar14 & 0x20)" (( "(") (binary_expression "uVar14 & 0x20" (identifier "uVar14") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00039c0b;" (goto "goto") (statement_identifier "LAB_00039c0b") (; ";"))) (} "}")))) (expression_statement "*(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;" (assignment_expression "*(uint *)(param_1 + 300) = uVar14 & 0xfffffffd" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (= "=") (binary_expression "uVar14 & 0xfffffffd" (identifier "uVar14") (& "&") (number_literal "0xfffffffd"))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a8b8" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a8b8")) (; ";")) (expression_statement "FUN_000647d0();" (call_expression "FUN_000647d0()" (identifier "FUN_000647d0") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }" (if "if") (parenthesized_expression "(*(char *)((int)unaff_retaddr + 0x25b) != '\0')" (( "(") (binary_expression "*(char *)((int)unaff_retaddr + 0x25b) != '\0'" (pointer_expression "*(char *)((int)unaff_retaddr + 0x25b)" (* "*") (cast_expression "(char *)((int)unaff_retaddr + 0x25b)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_retaddr + 0x25b)" (( "(") (binary_expression "(int)unaff_retaddr + 0x25b" (cast_expression "(int)unaff_retaddr" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_retaddr")) (+ "+") (number_literal "0x25b")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          *(int **)(puVar16 + -0x10) = unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;\n          iVar13 = FUN_00039660();\n          if (iVar13 != 0) goto LAB_00039d70;\n        }" ({ "{") (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a8d1" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a8d1")) (; ";")) (expression_statement "iVar13 = FUN_00039660();" (assignment_expression "iVar13 = FUN_00039660()" (identifier "iVar13") (= "=") (call_expression "FUN_00039660()" (identifier "FUN_00039660") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";"))) (} "}"))) (} "}")) (else_clause "else {\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }" (else "else") (compound_statement "{\n        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;\nLAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);\n        *(int *)(puVar16 + -0x14) = iVar13;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;\n        iVar13 = FUN_00026df0();\n        if (iVar13 != 0) goto LAB_00039d70;\n        uVar14 = *(uint *)(puVar16 + 0x58);\n        if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);\n        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));\n        cVar7 = *(char *)(param_1 + 0x145);\n        *(int *)(puVar16 + 8) = iVar13;\n        *(int *)(puVar16 + 0xc) = iVar10;\n        *(int *)(param_1 + 0xb4) = iVar13;\n        *(int *)(param_1 + 0xb8) = iVar10;\n        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }\n        if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }\n        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);\n        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;\n        FUN_0001cb10();\n      }" ({ "{") (expression_statement "*(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + 8) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + 8)" (* "*") (cast_expression "(undefined1 **)(puVar16 + 8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58"))) (; ";")) (labeled_statement "LAB_00039b53:\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);" (statement_identifier "LAB_00039b53") (: ":") (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")"))))) (; ";"))) (expression_statement "*(int *)(puVar16 + -0x14) = iVar13;" (assignment_expression "*(int *)(puVar16 + -0x14) = iVar13" (pointer_expression "*(int *)(puVar16 + -0x14)" (* "*") (cast_expression "(int *)(puVar16 + -0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "iVar13")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140)" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x18)" (( "(") (binary_expression "puVar16 + -0x18" (identifier "puVar16") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x140)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x140)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];" (assignment_expression "*(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6]" (pointer_expression "*(int *)(puVar16 + -0x1c)" (* "*") (cast_expression "(int *)(puVar16 + -0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x1c)" (( "(") (binary_expression "puVar16 + -0x1c" (identifier "puVar16") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (subscript_expression "unaff_retaddr[0xa6]" (identifier "unaff_retaddr") ([ "[") (number_literal "0xa6") (] "]"))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x20) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x20) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x20)" (* "*") (cast_expression "(int **)(puVar16 + -0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x20)" (( "(") (binary_expression "puVar16 + -0x20" (identifier "puVar16") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = 0x39b6d;" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = 0x39b6d" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x24)" (( "(") (binary_expression "puVar16 + -0x24" (identifier "puVar16") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (number_literal "0x39b6d")) (; ";")) (expression_statement "iVar13 = FUN_00026df0();" (assignment_expression "iVar13 = FUN_00026df0()" (identifier "iVar13") (= "=") (call_expression "FUN_00026df0()" (identifier "FUN_00026df0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";"))) (expression_statement "uVar14 = *(uint *)(puVar16 + 0x58);" (assignment_expression "uVar14 = *(uint *)(puVar16 + 0x58)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(puVar16 + 0x58)" (* "*") (cast_expression "(uint *)(puVar16 + 0x58)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (if_statement "if (*(char *)(param_1 + 0x93c) != '\0') {\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x93c) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x93c) != '\0'" (pointer_expression "*(char *)(param_1 + 0x93c)" (* "*") (cast_expression "(char *)(param_1 + 0x93c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x93c)" (( "(") (binary_expression "param_1 + 0x93c" (identifier "param_1") (+ "+") (number_literal "0x93c")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          *(uint *)(puVar16 + -4) = uVar14;\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);\n          *(undefined4 *)(puVar16 + -0xc) = 4;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;\n          FUN_00027090();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }" ({ "{") (expression_statement "*(uint *)(puVar16 + -4) = uVar14;" (assignment_expression "*(uint *)(puVar16 + -4) = uVar14" (pointer_expression "*(uint *)(puVar16 + -4)" (* "*") (cast_expression "(uint *)(puVar16 + -4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "uVar14")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x140)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x140)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 4;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 4" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "4")) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a8f7" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a8f7")) (; ";")) (expression_statement "FUN_00027090();" (call_expression "FUN_00027090()" (identifier "FUN_00027090") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar14 = *(uint *)(puVar16 + 0x58);" (assignment_expression "uVar14 = *(uint *)(puVar16 + 0x58)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(puVar16 + 0x58)" (* "*") (cast_expression "(uint *)(puVar16 + 0x58)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (} "}"))) (expression_statement "iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);" (assignment_expression "iVar13 = uVar14 + *(uint *)(param_1 + 0xb4)" (identifier "iVar13") (= "=") (binary_expression "uVar14 + *(uint *)(param_1 + 0xb4)" (identifier "uVar14") (+ "+") (pointer_expression "*(uint *)(param_1 + 0xb4)" (* "*") (cast_expression "(uint *)(param_1 + 0xb4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb4)" (( "(") (binary_expression "param_1 + 0xb4" (identifier "param_1") (+ "+") (number_literal "0xb4")) () ")")))))) (; ";")) (expression_statement "iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));" (assignment_expression "iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4))" (identifier "iVar10") (= "=") (binary_expression "((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +\n                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4))" (binary_expression "((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8)" (parenthesized_expression "((int)uVar14 >> 0x1f)" (( "(") (binary_expression "(int)uVar14 >> 0x1f" (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14")) (>> ">>") (number_literal "0x1f")) () ")")) (+ "+") (pointer_expression "*(int *)(param_1 + 0xb8)" (* "*") (cast_expression "(int *)(param_1 + 0xb8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb8)" (( "(") (binary_expression "param_1 + 0xb8" (identifier "param_1") (+ "+") (number_literal "0xb8")) () ")"))))) (+ "+") (cast_expression "(uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4))" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar14,*(uint *)(param_1 + 0xb4))" (identifier "CARRY4") (argument_list "(uVar14,*(uint *)(param_1 + 0xb4))" (( "(") (identifier "uVar14") (, ",") (pointer_expression "*(uint *)(param_1 + 0xb4)" (* "*") (cast_expression "(uint *)(param_1 + 0xb4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb4)" (( "(") (binary_expression "param_1 + 0xb4" (identifier "param_1") (+ "+") (number_literal "0xb4")) () ")")))) () ")")))))) (; ";")) (expression_statement "cVar7 = *(char *)(param_1 + 0x145);" (assignment_expression "cVar7 = *(char *)(param_1 + 0x145)" (identifier "cVar7") (= "=") (pointer_expression "*(char *)(param_1 + 0x145)" (* "*") (cast_expression "(char *)(param_1 + 0x145)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x145)" (( "(") (binary_expression "param_1 + 0x145" (identifier "param_1") (+ "+") (number_literal "0x145")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar16 + 8) = iVar13;" (assignment_expression "*(int *)(puVar16 + 8) = iVar13" (pointer_expression "*(int *)(puVar16 + 8)" (* "*") (cast_expression "(int *)(puVar16 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "iVar13")) (; ";")) (expression_statement "*(int *)(puVar16 + 0xc) = iVar10;" (assignment_expression "*(int *)(puVar16 + 0xc) = iVar10" (pointer_expression "*(int *)(puVar16 + 0xc)" (* "*") (cast_expression "(int *)(puVar16 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xc)" (( "(") (binary_expression "puVar16 + 0xc" (identifier "puVar16") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "*(int *)(param_1 + 0xb4) = iVar13;" (assignment_expression "*(int *)(param_1 + 0xb4) = iVar13" (pointer_expression "*(int *)(param_1 + 0xb4)" (* "*") (cast_expression "(int *)(param_1 + 0xb4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb4)" (( "(") (binary_expression "param_1 + 0xb4" (identifier "param_1") (+ "+") (number_literal "0xb4")) () ")")))) (= "=") (identifier "iVar13")) (; ";")) (expression_statement "*(int *)(param_1 + 0xb8) = iVar10;" (assignment_expression "*(int *)(param_1 + 0xb8) = iVar10" (pointer_expression "*(int *)(param_1 + 0xb8)" (* "*") (cast_expression "(int *)(param_1 + 0xb8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb8)" (( "(") (binary_expression "param_1 + 0xb8" (identifier "param_1") (+ "+") (number_literal "0xb8")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (if_statement "if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }" (if "if") (parenthesized_expression "(((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc)))" (( "(") (binary_expression "((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&\n           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))" (parenthesized_expression "((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0'))" (( "(") (binary_expression "(cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')" (parenthesized_expression "(cVar7 == '\0')" (( "(") (binary_expression "cVar7 == '\0'" (identifier "cVar7") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(*(char *)(param_1 + 0x147) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x147) != '\0'" (pointer_expression "*(char *)(param_1 + 0x147)" (* "*") (cast_expression "(char *)(param_1 + 0x147)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x147)" (( "(") (binary_expression "param_1 + 0x147" (identifier "param_1") (+ "+") (number_literal "0x147")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))" (( "(") (binary_expression "*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&\n            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc)" (binary_expression "*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0)" (pointer_expression "*(int *)(puVar16 + 0xc)" (* "*") (cast_expression "(int *)(puVar16 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xc)" (( "(") (binary_expression "puVar16 + 0xc" (identifier "puVar16") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (pointer_expression "*(int *)(param_1 + 0xed0)" (* "*") (cast_expression "(int *)(param_1 + 0xed0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xed0)" (( "(") (binary_expression "param_1 + 0xed0" (identifier "param_1") (+ "+") (number_literal "0xed0")) () ")"))))) (&& "&&") (binary_expression "*(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc)" (pointer_expression "*(int *)(puVar16 + 8)" (* "*") (cast_expression "(int *)(puVar16 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (== "==") (pointer_expression "*(int *)(param_1 + 0xecc)" (* "*") (cast_expression "(int *)(param_1 + 0xecc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xecc)" (( "(") (binary_expression "param_1 + 0xecc" (identifier "param_1") (+ "+") (number_literal "0xecc")) () ")")))))) () ")"))) () ")")) (compound_statement "{\n          *(undefined1 *)(param_1 + 0x130) = 1;\n          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;\n          FUN_00027140();\n          uVar14 = *(uint *)(puVar16 + 0x58);\n        }" ({ "{") (expression_statement "*(undefined1 *)(param_1 + 0x130) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x130) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x130)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x130)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x130)" (( "(") (binary_expression "param_1 + 0x130" (identifier "param_1") (+ "+") (number_literal "0x130")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586" (pointer_expression "*(int *)(puVar16 + -0xc)" (* "*") (cast_expression "(int *)(puVar16 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (binary_expression "unaff_EBX + 0x47586" (identifier "unaff_EBX") (+ "+") (number_literal "0x47586"))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a937;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a937" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a937")) (; ";")) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" (identifier "FUN_00027140") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar14 = *(uint *)(puVar16 + 0x58);" (assignment_expression "uVar14 = *(uint *)(puVar16 + 0x58)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(puVar16 + 0x58)" (* "*") (cast_expression "(uint *)(puVar16 + 0x58)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (*(uint *)(param_1 + 0x13c) == uVar14) {\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }\n        else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }" (if "if") (parenthesized_expression "(*(uint *)(param_1 + 0x13c) == uVar14)" (( "(") (binary_expression "*(uint *)(param_1 + 0x13c) == uVar14" (pointer_expression "*(uint *)(param_1 + 0x13c)" (* "*") (cast_expression "(uint *)(param_1 + 0x13c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x13c)" (( "(") (binary_expression "param_1 + 0x13c" (identifier "param_1") (+ "+") (number_literal "0x13c")) () ")")))) (== "==") (identifier "uVar14")) () ")")) (compound_statement "{\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;\n          iVar13 = FUN_00039100();\n          if (iVar13 != 0) goto LAB_00039d70;\n          *(undefined4 *)(param_1 + 0x13c) = 0;\n          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);\n          if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }\n        }" ({ "{") (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3aae9;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3aae9" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3aae9")) (; ";")) (expression_statement "iVar13 = FUN_00039100();" (assignment_expression "iVar13 = FUN_00039100()" (identifier "iVar13") (= "=") (call_expression "FUN_00039100()" (identifier "FUN_00039100") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";"))) (expression_statement "*(undefined4 *)(param_1 + 0x13c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x13c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x13c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x13c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x13c)" (( "(") (binary_expression "param_1 + 0x13c" (identifier "param_1") (+ "+") (number_literal "0x13c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);" (assignment_expression "*(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c)" (pointer_expression "*(undefined4 *)(param_1 + 0x140)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x140)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xc6c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc6c)" (( "(") (binary_expression "param_1 + 0xc6c" (identifier "param_1") (+ "+") (number_literal "0xc6c")) () ")"))))) (; ";")) (if_statement "if (*(char *)(param_1 + 0x130) != '\0') {\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x130) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x130) != '\0'" (pointer_expression "*(char *)(param_1 + 0x130)" (* "*") (cast_expression "(char *)(param_1 + 0x130)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x130)" (( "(") (binary_expression "param_1 + 0x130" (identifier "param_1") (+ "+") (number_literal "0x130")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;\n            FUN_000647d0();\n            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }\n          }" ({ "{") (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (= "=") (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffd" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (& "&") (number_literal "0xfffffffd"))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ab29;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ab29" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3ab29")) (; ";")) (expression_statement "FUN_000647d0();" (call_expression "FUN_000647d0()" (identifier "FUN_000647d0") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }" (if "if") (parenthesized_expression "(*(char *)((int)unaff_retaddr + 0x25b) != '\0')" (( "(") (binary_expression "*(char *)((int)unaff_retaddr + 0x25b) != '\0'" (pointer_expression "*(char *)((int)unaff_retaddr + 0x25b)" (* "*") (cast_expression "(char *)((int)unaff_retaddr + 0x25b)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_retaddr + 0x25b)" (( "(") (binary_expression "(int)unaff_retaddr + 0x25b" (cast_expression "(int)unaff_retaddr" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_retaddr")) (+ "+") (number_literal "0x25b")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;\n              iVar13 = FUN_00039660();\n              if (iVar13 != 0) goto LAB_00039d70;\n            }" ({ "{") (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ab42;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ab42" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3ab42")) (; ";")) (expression_statement "iVar13 = FUN_00039660();" (assignment_expression "iVar13 = FUN_00039660()" (identifier "iVar13") (= "=") (call_expression "FUN_00039660()" (identifier "FUN_00039660") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";"))) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }" (else "else") (compound_statement "{\n          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;\n          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;\n        }" ({ "{") (expression_statement "*(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;" (assignment_expression "*(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14" (pointer_expression "*(int *)(param_1 + 0x140)" (* "*") (cast_expression "(int *)(param_1 + 0x140)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x140) + uVar14" (pointer_expression "*(int *)(param_1 + 0x140)" (* "*") (cast_expression "(int *)(param_1 + 0x140)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")")))) (+ "+") (identifier "uVar14"))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;" (assignment_expression "*(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14" (pointer_expression "*(uint *)(param_1 + 0x13c)" (* "*") (cast_expression "(uint *)(param_1 + 0x13c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x13c)" (( "(") (binary_expression "param_1 + 0x13c" (identifier "param_1") (+ "+") (number_literal "0x13c")) () ")")))) (= "=") (binary_expression "*(uint *)(param_1 + 0x13c) - uVar14" (pointer_expression "*(uint *)(param_1 + 0x13c)" (* "*") (cast_expression "(uint *)(param_1 + 0x13c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x13c)" (( "(") (binary_expression "param_1 + 0x13c" (identifier "param_1") (+ "+") (number_literal "0x13c")) () ")")))) (- "-") (identifier "uVar14"))) (; ";")) (} "}")))) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xb8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xb8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb8)" (( "(") (binary_expression "param_1 + 0xb8" (identifier "param_1") (+ "+") (number_literal "0xb8")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xb4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xb4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb4)" (( "(") (binary_expression "param_1 + 0xb4" (identifier "param_1") (+ "+") (number_literal "0xb4")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39c08;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39c08" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x39c08")) (; ";")) (expression_statement "FUN_0001cb10();" (call_expression "FUN_0001cb10()" (identifier "FUN_0001cb10") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (labeled_statement "LAB_00039c0b:\n      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;" (statement_identifier "LAB_00039c0b") (: ":") (expression_statement "*(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;" (assignment_expression "*(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48" (pointer_expression "*(undefined1 **)(puVar16 + -0x10)" (* "*") (cast_expression "(undefined1 **)(puVar16 + -0x10)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "puVar16 + 0x48" (identifier "puVar16") (+ "+") (number_literal "0x48"))) (; ";"))) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39c18;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39c18" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x39c18")) (; ";")) (expression_statement "FUN_0001ab40();" (call_expression "FUN_0001ab40()" (identifier "FUN_0001ab40") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar9 = *(undefined4 *)(puVar16 + 0x48);" (assignment_expression "uVar9 = *(undefined4 *)(puVar16 + 0x48)" (identifier "uVar9") (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x48)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x48)" (( "(") (binary_expression "puVar16 + 0x48" (identifier "puVar16") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "iVar13 = *(int *)(puVar16 + 0x20);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x20)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(puVar16 + 0x20)" (* "*") (cast_expression "(int *)(puVar16 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x20)" (( "(") (binary_expression "puVar16 + 0x20" (identifier "puVar16") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "puVar15 = puVar16 + -4;" (assignment_expression "puVar15 = puVar16 + -4" (identifier "puVar15") (= "=") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4"))) (; ";")) (expression_statement "*(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);" (assignment_expression "*(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44)" (pointer_expression "*(undefined4 *)(iVar13 + 0x38)" (* "*") (cast_expression "(undefined4 *)(iVar13 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x38)" (( "(") (binary_expression "iVar13 + 0x38" (identifier "iVar13") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x44)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x44)" (( "(") (binary_expression "puVar16 + 0x44" (identifier "puVar16") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar13 + 0x3c) = uVar9;" (assignment_expression "*(undefined4 *)(iVar13 + 0x3c) = uVar9" (pointer_expression "*(undefined4 *)(iVar13 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(iVar13 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x3c)" (( "(") (binary_expression "iVar13 + 0x3c" (identifier "iVar13") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (goto_statement "goto LAB_00039ecb;" (goto "goto") (statement_identifier "LAB_00039ecb") (; ";")) (} "}"))) (expression_statement "FUN_0001ab40(local_3c + 1);" (call_expression "FUN_0001ab40(local_3c + 1)" (identifier "FUN_0001ab40") (argument_list "(local_3c + 1)" (( "(") (binary_expression "local_3c + 1" (identifier "local_3c") (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "*(undefined1 **)(param_1 + 0xcc) = local_3c[0];" (assignment_expression "*(undefined1 **)(param_1 + 0xcc) = local_3c[0]" (pointer_expression "*(undefined1 **)(param_1 + 0xcc)" (* "*") (cast_expression "(undefined1 **)(param_1 + 0xcc)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xcc)" (( "(") (binary_expression "param_1 + 0xcc" (identifier "param_1") (+ "+") (number_literal "0xcc")) () ")")))) (= "=") (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "*(undefined1 **)(param_1 + 0xd0) = local_3c[1];" (assignment_expression "*(undefined1 **)(param_1 + 0xd0) = local_3c[1]" (pointer_expression "*(undefined1 **)(param_1 + 0xd0)" (* "*") (cast_expression "(undefined1 **)(param_1 + 0xd0)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xd0)" (( "(") (binary_expression "param_1 + 0xd0" (identifier "param_1") (+ "+") (number_literal "0xd0")) () ")")))) (= "=") (subscript_expression "local_3c[1]" (identifier "local_3c") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar4 = &uStack_84;" (assignment_expression "puVar4 = &uStack_84" (identifier "puVar4") (= "=") (pointer_expression "&uStack_84" (& "&") (identifier "uStack_84"))) (; ";")) (labeled_statement "LAB_00039c5c:\n    puVar15 = (undefined1 *)puVar4;" (statement_identifier "LAB_00039c5c") (: ":") (expression_statement "puVar15 = (undefined1 *)puVar4;" (assignment_expression "puVar15 = (undefined1 *)puVar4" (identifier "puVar15") (= "=") (cast_expression "(undefined1 *)puVar4" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar4"))) (; ";"))) (if_statement "if (*(int *)(param_1 + 0x110) == 1) {\n      iVar13 = *(int *)(puVar15 + 0x24);\n      *(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);\n      *(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);\n      *(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);\n      *(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);\n      *(undefined4 *)(puVar15 + -0x14) = 0x3a775;\n      iVar13 = FUN_0001abe0();\n      if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }\n    }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x110) == 1)" (( "(") (binary_expression "*(int *)(param_1 + 0x110) == 1" (pointer_expression "*(int *)(param_1 + 0x110)" (* "*") (cast_expression "(int *)(param_1 + 0x110)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")")))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      iVar13 = *(int *)(puVar15 + 0x24);\n      *(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);\n      *(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);\n      *(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);\n      *(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);\n      *(undefined4 *)(puVar15 + -0x14) = 0x3a775;\n      iVar13 = FUN_0001abe0();\n      if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }\n    }" ({ "{") (expression_statement "iVar13 = *(int *)(puVar15 + 0x24);" (assignment_expression "iVar13 = *(int *)(puVar15 + 0x24)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(puVar15 + 0x24)" (* "*") (cast_expression "(int *)(puVar15 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar15 + 0x24)" (( "(") (binary_expression "puVar15 + 0x24" (identifier "puVar15") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);" (assignment_expression "*(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78)" (pointer_expression "*(undefined4 *)(puVar15 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar15 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar15 + -4)" (( "(") (binary_expression "puVar15 + -4" (identifier "puVar15") (+ "+") (number_literal "-4")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(iVar13 + 0x78)" (* "*") (cast_expression "(undefined4 *)(iVar13 + 0x78)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x78)" (( "(") (binary_expression "iVar13 + 0x78" (identifier "iVar13") (+ "+") (number_literal "0x78")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);" (assignment_expression "*(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74)" (pointer_expression "*(undefined4 *)(puVar15 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar15 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar15 + -8)" (( "(") (binary_expression "puVar15 + -8" (identifier "puVar15") (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(iVar13 + 0x74)" (* "*") (cast_expression "(undefined4 *)(iVar13 + 0x74)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x74)" (( "(") (binary_expression "iVar13 + 0x74" (identifier "iVar13") (+ "+") (number_literal "0x74")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);" (assignment_expression "*(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c)" (pointer_expression "*(undefined4 *)(puVar15 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar15 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar15 + -0xc)" (( "(") (binary_expression "puVar15 + -0xc" (identifier "puVar15") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(iVar13 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(iVar13 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x3c)" (( "(") (binary_expression "iVar13 + 0x3c" (identifier "iVar13") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);" (assignment_expression "*(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38)" (pointer_expression "*(undefined4 *)(puVar15 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar15 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar15 + -0x10)" (( "(") (binary_expression "puVar15 + -0x10" (identifier "puVar15") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(iVar13 + 0x38)" (* "*") (cast_expression "(undefined4 *)(iVar13 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x38)" (( "(") (binary_expression "iVar13 + 0x38" (identifier "iVar13") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x3a775;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x3a775" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar15 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar15 + -0x14)" (( "(") (binary_expression "puVar15 + -0x14" (identifier "puVar15") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a775")) (; ";")) (expression_statement "iVar13 = FUN_0001abe0();" (assignment_expression "iVar13 = FUN_0001abe0()" (identifier "iVar13") (= "=") (call_expression "FUN_0001abe0()" (identifier "FUN_0001abe0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (*(int *)(param_1 + 0xad8) <= iVar13) {\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0xad8) <= iVar13)" (( "(") (binary_expression "*(int *)(param_1 + 0xad8) <= iVar13" (pointer_expression "*(int *)(param_1 + 0xad8)" (* "*") (cast_expression "(int *)(param_1 + 0xad8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xad8)" (( "(") (binary_expression "param_1 + 0xad8" (identifier "param_1") (+ "+") (number_literal "0xad8")) () ")")))) (<= "<=") (identifier "iVar13")) () ")")) (compound_statement "{\n        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;\n        *(undefined4 *)(param_1 + 0x110) = 0;\n        *(undefined4 *)(puVar15 + -0xc) = 0;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;\n        FUN_00043c20();\n        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;\n        *(int *)(puVar15 + -0x10) = param_1;\n        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;\n        FUN_00027140();\n      }" ({ "{") (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (= "=") (binary_expression "*(uint *)(param_1 + 300) | 2" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (| "|") (number_literal "2"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x110) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x110) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x110)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x110)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar15 + -0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar15 + -0xc) = 0" (pointer_expression "*(undefined4 *)(puVar15 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar15 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar15 + -0xc)" (( "(") (binary_expression "puVar15 + -0xc" (identifier "puVar15") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(puVar15 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar15 + -0x10) = param_1" (pointer_expression "*(int *)(puVar15 + -0x10)" (* "*") (cast_expression "(int *)(puVar15 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar15 + -0x10)" (( "(") (binary_expression "puVar15 + -0x10" (identifier "puVar15") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x3a7a0" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar15 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar15 + -0x14)" (( "(") (binary_expression "puVar15 + -0x14" (identifier "puVar15") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a7a0")) (; ";")) (expression_statement "FUN_00043c20();" (call_expression "FUN_00043c20()" (identifier "FUN_00043c20") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;" (assignment_expression "*(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae" (pointer_expression "*(int *)(puVar15 + -0xc)" (* "*") (cast_expression "(int *)(puVar15 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar15 + -0xc)" (( "(") (binary_expression "puVar15 + -0xc" (identifier "puVar15") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (binary_expression "unaff_EBX + 0x475ae" (identifier "unaff_EBX") (+ "+") (number_literal "0x475ae"))) (; ";")) (expression_statement "*(int *)(puVar15 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar15 + -0x10) = param_1" (pointer_expression "*(int *)(puVar15 + -0x10)" (* "*") (cast_expression "(int *)(puVar15 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar15 + -0x10)" (( "(") (binary_expression "puVar15 + -0x10" (identifier "puVar15") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x3a7af;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x3a7af" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar15 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar15 + -0x14)" (( "(") (binary_expression "puVar15 + -0x14" (identifier "puVar15") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a7af")) (; ";")) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" (identifier "FUN_00027140") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00039c69:\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;" (statement_identifier "LAB_00039c69") (: ":") (expression_statement "*(int **)(puVar15 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar15 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar15 + -0x10)" (* "*") (cast_expression "(int **)(puVar15 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar15 + -0x10)" (( "(") (binary_expression "puVar15 + -0x10" (identifier "puVar15") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";"))) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x39c72;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x39c72" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar15 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar15 + -0x14)" (( "(") (binary_expression "puVar15 + -0x14" (identifier "puVar15") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x39c72")) (; ";")) (expression_statement "iVar13 = FUN_0001cc10();" (assignment_expression "iVar13 = FUN_0001cc10()" (identifier "iVar13") (= "=") (call_expression "FUN_0001cc10()" (identifier "FUN_0001cc10") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar16 = puVar15;" (assignment_expression "puVar16 = puVar15" (identifier "puVar16") (= "=") (identifier "puVar15")) (; ";")) (} "}")) (else_clause "else {\n    local_2a = 0;\n    local_70[0] = 0;\n    *local_48 = 0;\n    local_70[3] = 100;\n    *local_3c[0] = 0;\n    local_44 = 0;\n    puVar16 = auStack_80;\n    do {\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    } while (*(int *)(puVar16 + 0x1c) != -1);\n    uVar14 = *(uint *)(param_1 + 300);\nLAB_00039e5f:\n    puVar17 = *(undefined1 **)(puVar16 + 0x44);\n    unaff_retaddr[0x158] = 1;\n    *puVar17 = 1;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }\n    puVar17 = puVar16 + 0x48;\nLAB_00039ea1:\n    *(undefined1 **)(puVar16 + -0x10) = puVar17;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39eaa;\n    FUN_0001ab40();\n    uVar9 = *(undefined4 *)(puVar16 + 0x48);\n    iVar13 = *(int *)(puVar16 + 0x20);\n    puVar15 = puVar16 + -4;\n    *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n    *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n    puVar4 = (undefined4 *)(puVar16 + -4);\n    if (*(int *)(puVar16 + 0x1c) == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    puVar4 = *(undefined4 **)(param_1 + 0x9c);\n    if (puVar4 != (undefined4 *)0x0) {\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }\n    puVar4 = *(undefined4 **)(param_1 + 0xa8);\n    if (puVar4 == (undefined4 *)0x0) goto LAB_00039c69;\n    uVar9 = *(undefined4 *)(param_1 + 0xb8);\n    *puVar4 = *(undefined4 *)(param_1 + 0xb4);\n    puVar4[1] = uVar9;\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39f0e;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }" (else "else") (compound_statement "{\n    local_2a = 0;\n    local_70[0] = 0;\n    *local_48 = 0;\n    local_70[3] = 100;\n    *local_3c[0] = 0;\n    local_44 = 0;\n    puVar16 = auStack_80;\n    do {\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    } while (*(int *)(puVar16 + 0x1c) != -1);\n    uVar14 = *(uint *)(param_1 + 300);\nLAB_00039e5f:\n    puVar17 = *(undefined1 **)(puVar16 + 0x44);\n    unaff_retaddr[0x158] = 1;\n    *puVar17 = 1;\njoined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }\n    puVar17 = puVar16 + 0x48;\nLAB_00039ea1:\n    *(undefined1 **)(puVar16 + -0x10) = puVar17;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39eaa;\n    FUN_0001ab40();\n    uVar9 = *(undefined4 *)(puVar16 + 0x48);\n    iVar13 = *(int *)(puVar16 + 0x20);\n    puVar15 = puVar16 + -4;\n    *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);\n    *(undefined4 *)(iVar13 + 0x3c) = uVar9;\n    puVar4 = (undefined4 *)(puVar16 + -4);\n    if (*(int *)(puVar16 + 0x1c) == 0) goto LAB_00039c5c;\nLAB_00039ecb:\n    puVar4 = *(undefined4 **)(param_1 + 0x9c);\n    if (puVar4 != (undefined4 *)0x0) {\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }\n    puVar4 = *(undefined4 **)(param_1 + 0xa8);\n    if (puVar4 == (undefined4 *)0x0) goto LAB_00039c69;\n    uVar9 = *(undefined4 *)(param_1 + 0xb8);\n    *puVar4 = *(undefined4 *)(param_1 + 0xb4);\n    puVar4[1] = uVar9;\n    *(int **)(puVar15 + -0x10) = unaff_retaddr;\n    *(undefined4 *)(puVar15 + -0x14) = 0x39f0e;\n    iVar13 = FUN_0001cc10();\n    puVar16 = puVar15;\n  }" ({ "{") (expression_statement "local_2a = 0;" (assignment_expression "local_2a = 0" (identifier "local_2a") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_70[0] = 0;" (assignment_expression "local_70[0] = 0" (subscript_expression "local_70[0]" (identifier "local_70") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*local_48 = 0;" (assignment_expression "*local_48 = 0" (pointer_expression "*local_48" (* "*") (identifier "local_48")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_70[3] = 100;" (assignment_expression "local_70[3] = 100" (subscript_expression "local_70[3]" (identifier "local_70") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "100")) (; ";")) (expression_statement "*local_3c[0] = 0;" (assignment_expression "*local_3c[0] = 0" (pointer_expression "*local_3c[0]" (* "*") (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" (identifier "local_44") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar16 = auStack_80;" (assignment_expression "puVar16 = auStack_80" (identifier "puVar16") (= "=") (identifier "auStack_80")) (; ";")) (do_statement "do {\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    } while (*(int *)(puVar16 + 0x1c) != -1);" (do "do") (compound_statement "{\n      uVar14 = *(uint *)(param_1 + 0x8f8);\n      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }\n      if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }\n      iVar13 = *(int *)(param_1 + 0xb0);\n      iVar10 = *(int *)(param_1 + 0xac);\n      *(undefined4 *)(puVar16 + 0x58) = 0;\n      if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }\n      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;\n      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);\n      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n      if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }\nLAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }\n      if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }\n      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;\n      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }\n      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;\n      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n    }" ({ "{") (expression_statement "uVar14 = *(uint *)(param_1 + 0x8f8);" (assignment_expression "uVar14 = *(uint *)(param_1 + 0x8f8)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(param_1 + 0x8f8)" (* "*") (cast_expression "(uint *)(param_1 + 0x8f8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x8f8)" (( "(") (binary_expression "param_1 + 0x8f8" (identifier "param_1") (+ "+") (number_literal "0x8f8")) () ")"))))) (; ";")) (if_statement "if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }" (if "if") (parenthesized_expression "(((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14))" (( "(") (binary_expression "((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)" (parenthesized_expression "((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0)" (( "(") (binary_expression "(*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0" (parenthesized_expression "(*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3)" (( "(") (binary_expression "*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3" (pointer_expression "*(byte *)(unaff_retaddr[0x9f] + 0x40)" (* "*") (cast_expression "(byte *)(unaff_retaddr[0x9f] + 0x40)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr[0x9f] + 0x40)" (( "(") (binary_expression "unaff_retaddr[0x9f] + 0x40" (subscript_expression "unaff_retaddr[0x9f]" (identifier "unaff_retaddr") ([ "[") (number_literal "0x9f") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (& "&") (number_literal "3")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(unaff_retaddr[0x5e] != 0x14)" (( "(") (binary_expression "unaff_retaddr[0x5e] != 0x14" (subscript_expression "unaff_retaddr[0x5e]" (identifier "unaff_retaddr") ([ "[") (number_literal "0x5e") (] "]")) (!= "!=") (number_literal "0x14")) () ")"))) () ")")) (compound_statement "{\n        uVar2 = *(uint *)(param_1 + 0x94);\n        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }\n      }" ({ "{") (expression_statement "uVar2 = *(uint *)(param_1 + 0x94);" (assignment_expression "uVar2 = *(uint *)(param_1 + 0x94)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(param_1 + 0x94)" (* "*") (cast_expression "(uint *)(param_1 + 0x94)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x94)" (( "(") (binary_expression "param_1 + 0x94" (identifier "param_1") (+ "+") (number_literal "0x94")) () ")"))))) (; ";")) (if_statement "if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {\n          uVar14 = uVar8;\n        }" (if "if") (parenthesized_expression "(((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14)))))" (( "(") (binary_expression "((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&\n           ((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))" (parenthesized_expression "((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff)" (( "(") (binary_expression "(*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff" (parenthesized_expression "(*(uint *)(param_1 + 0x98) & uVar2)" (( "(") (binary_expression "*(uint *)(param_1 + 0x98) & uVar2" (pointer_expression "*(uint *)(param_1 + 0x98)" (* "*") (cast_expression "(uint *)(param_1 + 0x98)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x98)" (( "(") (binary_expression "param_1 + 0x98" (identifier "param_1") (+ "+") (number_literal "0x98")) () ")")))) (& "&") (identifier "uVar2")) () ")")) (!= "!=") (number_literal "0xffffffff")) () ")")) (&& "&&") (parenthesized_expression "((*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))" (( "(") (parenthesized_expression "(*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14)))" (( "(") (binary_expression "*(char *)(param_1 + 0xd4) == '\0' &&\n            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))" (binary_expression "*(char *)(param_1 + 0xd4) == '\0'" (pointer_expression "*(char *)(param_1 + 0xd4)" (* "*") (cast_expression "(char *)(param_1 + 0xd4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd4)" (( "(") (binary_expression "param_1 + 0xd4" (identifier "param_1") (+ "+") (number_literal "0xd4")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (&& "&&") (parenthesized_expression "(uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))" (( "(") (comma_expression "uVar8 = uVar2 - *(uint *)(param_1 + 0xac),\n            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14)" (assignment_expression "uVar8 = uVar2 - *(uint *)(param_1 + 0xac)" (identifier "uVar8") (= "=") (binary_expression "uVar2 - *(uint *)(param_1 + 0xac)" (identifier "uVar2") (- "-") (pointer_expression "*(uint *)(param_1 + 0xac)" (* "*") (cast_expression "(uint *)(param_1 + 0xac)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xac)" (( "(") (binary_expression "param_1 + 0xac" (identifier "param_1") (+ "+") (number_literal "0xac")) () ")")))))) (, ",") (binary_expression "(int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14)" (cast_expression "(int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac)))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac)))" (( "(") (binary_expression "(*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -\n                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))" (parenthesized_expression "(*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0))" (( "(") (binary_expression "*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)" (pointer_expression "*(uint *)(param_1 + 0x98)" (* "*") (cast_expression "(uint *)(param_1 + 0x98)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x98)" (( "(") (binary_expression "param_1 + 0x98" (identifier "param_1") (+ "+") (number_literal "0x98")) () ")")))) (- "-") (pointer_expression "*(int *)(param_1 + 0xb0)" (* "*") (cast_expression "(int *)(param_1 + 0xb0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")"))))) () ")")) (- "-") (call_expression "(uint)(uVar2 < *(uint *)(param_1 + 0xac))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar2 < *(uint *)(param_1 + 0xac))" (( "(") (binary_expression "uVar2 < *(uint *)(param_1 + 0xac)" (identifier "uVar2") (< "<") (pointer_expression "*(uint *)(param_1 + 0xac)" (* "*") (cast_expression "(uint *)(param_1 + 0xac)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xac)" (( "(") (binary_expression "param_1 + 0xac" (identifier "param_1") (+ "+") (number_literal "0xac")) () ")"))))) () ")")))) () ")"))) (< "<") (cast_expression "(int)(uint)(uVar8 < uVar14)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)(uVar8 < uVar14)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar8 < uVar14)" (( "(") (binary_expression "uVar8 < uVar14" (identifier "uVar8") (< "<") (identifier "uVar14")) () ")")))))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n          uVar14 = uVar8;\n        }" ({ "{") (expression_statement "uVar14 = uVar8;" (assignment_expression "uVar14 = uVar8" (identifier "uVar14") (= "=") (identifier "uVar8")) (; ";")) (} "}"))) (} "}"))) (if_statement "if (uVar14 != 0) {\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }" (if "if") (parenthesized_expression "(uVar14 != 0)" (( "(") (binary_expression "uVar14 != 0" (identifier "uVar14") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;\n        *(uint *)(puVar16 + -0x14) = uVar14;\n        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);\n        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];\n        *(int **)(puVar16 + -0x20) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;\n        iVar13 = FUN_00026f00();\n        if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);\nLAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;\n        goto LAB_00039e5f;\n      }" ({ "{") (expression_statement "*(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + -0x10)" (* "*") (cast_expression "(undefined1 **)(puVar16 + -0x10)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58"))) (; ";")) (expression_statement "*(uint *)(puVar16 + -0x14) = uVar14;" (assignment_expression "*(uint *)(puVar16 + -0x14) = uVar14" (pointer_expression "*(uint *)(puVar16 + -0x14)" (* "*") (cast_expression "(uint *)(puVar16 + -0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "uVar14")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124)" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x18)" (( "(") (binary_expression "puVar16 + -0x18" (identifier "puVar16") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x124)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x124)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x124)" (( "(") (binary_expression "param_1 + 0x124" (identifier "param_1") (+ "+") (number_literal "0x124")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];" (assignment_expression "*(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5]" (pointer_expression "*(int *)(puVar16 + -0x1c)" (* "*") (cast_expression "(int *)(puVar16 + -0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x1c)" (( "(") (binary_expression "puVar16 + -0x1c" (identifier "puVar16") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (subscript_expression "unaff_retaddr[0xa5]" (identifier "unaff_retaddr") ([ "[") (number_literal "0xa5") (] "]"))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x20) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x20) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x20)" (* "*") (cast_expression "(int **)(puVar16 + -0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x20)" (( "(") (binary_expression "puVar16 + -0x20" (identifier "puVar16") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = 0x39f63;" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = 0x39f63" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x24)" (( "(") (binary_expression "puVar16 + -0x24" (identifier "puVar16") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (number_literal "0x39f63")) (; ";")) (expression_statement "iVar13 = FUN_00026f00();" (assignment_expression "iVar13 = FUN_00026f00()" (identifier "iVar13") (= "=") (call_expression "FUN_00026f00()" (identifier "FUN_00026f00") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar13 != 0x51) {\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }" (if "if") (parenthesized_expression "(iVar13 != 0x51)" (( "(") (binary_expression "iVar13 != 0x51" (identifier "iVar13") (!= "!=") (number_literal "0x51")) () ")")) (compound_statement "{\n          if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }\n          goto LAB_00039d70;\n        }" ({ "{") (if_statement "if (iVar13 == 0) {\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;\n            goto LAB_000399eb;\n          }" ({ "{") (if_statement "if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;" (if "if") (parenthesized_expression "((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0))" (( "(") (binary_expression "(*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&\n               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)" (parenthesized_expression "(*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0" (binary_expression "*(int *)(param_1 + 0xb0) == 0" (pointer_expression "*(int *)(param_1 + 0xb0)" (* "*") (cast_expression "(int *)(param_1 + 0xb0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")")))) (== "==") (number_literal "0")) (&& "&&") (binary_expression "*(int *)(param_1 + 0xac) == 0" (pointer_expression "*(int *)(param_1 + 0xac)" (* "*") (cast_expression "(int *)(param_1 + 0xac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xac)" (( "(") (binary_expression "param_1 + 0xac" (identifier "param_1") (+ "+") (number_literal "0xac")) () ")")))) (== "==") (number_literal "0"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0" (binary_expression "*(int *)(param_1 + 0xb8) == 0" (pointer_expression "*(int *)(param_1 + 0xb8)" (* "*") (cast_expression "(int *)(param_1 + 0xb8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb8)" (( "(") (binary_expression "param_1 + 0xb8" (identifier "param_1") (+ "+") (number_literal "0xb8")) () ")")))) (== "==") (number_literal "0")) (&& "&&") (binary_expression "*(int *)(param_1 + 0xb4) == 0" (pointer_expression "*(int *)(param_1 + 0xb4)" (* "*") (cast_expression "(int *)(param_1 + 0xb4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb4)" (( "(") (binary_expression "param_1 + 0xb4" (identifier "param_1") (+ "+") (number_literal "0xb4")) () ")")))) (== "==") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_00039f9b;" (goto "goto") (statement_identifier "LAB_00039f9b") (; ";"))) (goto_statement "goto LAB_000399eb;" (goto "goto") (statement_identifier "LAB_000399eb") (; ";")) (} "}"))) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";")) (} "}"))) (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);" (assignment_expression "*(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10)" (pointer_expression "*(undefined4 *)(puVar16 + 0x20)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x20)" (( "(") (binary_expression "puVar16 + 0x20" (identifier "puVar16") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (labeled_statement "LAB_0003a00e:\n        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;" (statement_identifier "LAB_0003a00e") (: ":") (if_statement "if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;" (if "if") (parenthesized_expression "(*(int *)(puVar16 + 0x1c) != 0)" (( "(") (binary_expression "*(int *)(puVar16 + 0x1c) != 0" (pointer_expression "*(int *)(puVar16 + 0x1c)" (* "*") (cast_expression "(int *)(puVar16 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x1c)" (( "(") (binary_expression "puVar16 + 0x1c" (identifier "puVar16") (+ "+") (number_literal "0x1c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto joined_r0x0003a020;" (goto "goto") (statement_identifier "joined_r0x0003a020") (; ";")))) (goto_statement "goto LAB_00039e5f;" (goto "goto") (statement_identifier "LAB_00039e5f") (; ";")) (} "}"))) (expression_statement "iVar13 = *(int *)(param_1 + 0xb0);" (assignment_expression "iVar13 = *(int *)(param_1 + 0xb0)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(param_1 + 0xb0)" (* "*") (cast_expression "(int *)(param_1 + 0xb0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")"))))) (; ";")) (expression_statement "iVar10 = *(int *)(param_1 + 0xac);" (assignment_expression "iVar10 = *(int *)(param_1 + 0xac)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(param_1 + 0xac)" (* "*") (cast_expression "(int *)(param_1 + 0xac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xac)" (( "(") (binary_expression "param_1 + 0xac" (identifier "param_1") (+ "+") (number_literal "0xac")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x58) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + 0x58) = 0" (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar13 == 0 && iVar10 == 0) {\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }\n      else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }" (if "if") (parenthesized_expression "(iVar13 == 0 && iVar10 == 0)" (( "(") (binary_expression "iVar13 == 0 && iVar10 == 0" (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) (&& "&&") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }\nLAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);\n        if (iVar13 == 0) goto LAB_00039f28;\n        if (iVar13 < 1) goto LAB_0003a030;\n        *(undefined4 *)(puVar16 + 0x10) = 0;\n      }" ({ "{") (if_statement "if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0" (binary_expression "*(int *)(param_1 + 0xb8) == 0" (pointer_expression "*(int *)(param_1 + 0xb8)" (* "*") (cast_expression "(int *)(param_1 + 0xb8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb8)" (( "(") (binary_expression "param_1 + 0xb8" (identifier "param_1") (+ "+") (number_literal "0xb8")) () ")")))) (== "==") (number_literal "0")) (&& "&&") (binary_expression "*(int *)(param_1 + 0xb4) == 0" (pointer_expression "*(int *)(param_1 + 0xb4)" (* "*") (cast_expression "(int *)(param_1 + 0xb4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb4)" (( "(") (binary_expression "param_1 + 0xb4" (identifier "param_1") (+ "+") (number_literal "0xb4")) () ")")))) (== "==") (number_literal "0"))) () ")")) (compound_statement "{\nLAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;\n          FUN_0001c710();\n          if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }\n        }" ({ "{") (labeled_statement "LAB_00039f9b:\n          *(undefined4 *)(puVar16 + -0xc) = 7;" (statement_identifier "LAB_00039f9b") (: ":") (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 7;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 7" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "7")) (; ";"))) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39fa6;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39fa6" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x39fa6")) (; ";")) (expression_statement "FUN_0001c710();" (call_expression "FUN_0001c710()" (identifier "FUN_0001c710") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x110) != 0) {\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x110) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x110) != 0" (pointer_expression "*(int *)(param_1 + 0x110)" (* "*") (cast_expression "(int *)(param_1 + 0x110)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;\n            FUN_0001ab40();\n            puVar4 = (undefined4 *)(puVar16 + 0x44);\n            uVar9 = *(undefined4 *)(puVar16 + 0x48);\n            iVar13 = *(int *)(puVar16 + 0x20);\n            puVar16 = puVar16 + -4;\n            *(undefined4 *)(iVar13 + 0x74) = *puVar4;\n            *(undefined4 *)(iVar13 + 0x78) = uVar9;\n          }" ({ "{") (expression_statement "*(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;" (assignment_expression "*(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48" (pointer_expression "*(undefined1 **)(puVar16 + -0x10)" (* "*") (cast_expression "(undefined1 **)(puVar16 + -0x10)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "puVar16 + 0x48" (identifier "puVar16") (+ "+") (number_literal "0x48"))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39fc4;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39fc4" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x39fc4")) (; ";")) (expression_statement "FUN_0001ab40();" (call_expression "FUN_0001ab40()" (identifier "FUN_0001ab40") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar4 = (undefined4 *)(puVar16 + 0x44);" (assignment_expression "puVar4 = (undefined4 *)(puVar16 + 0x44)" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)(puVar16 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x44)" (( "(") (binary_expression "puVar16 + 0x44" (identifier "puVar16") (+ "+") (number_literal "0x44")) () ")")))) (; ";")) (expression_statement "uVar9 = *(undefined4 *)(puVar16 + 0x48);" (assignment_expression "uVar9 = *(undefined4 *)(puVar16 + 0x48)" (identifier "uVar9") (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x48)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x48)" (( "(") (binary_expression "puVar16 + 0x48" (identifier "puVar16") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "iVar13 = *(int *)(puVar16 + 0x20);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x20)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(puVar16 + 0x20)" (* "*") (cast_expression "(int *)(puVar16 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x20)" (( "(") (binary_expression "puVar16 + 0x20" (identifier "puVar16") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "puVar16 = puVar16 + -4;" (assignment_expression "puVar16 = puVar16 + -4" (identifier "puVar16") (= "=") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4"))) (; ";")) (expression_statement "*(undefined4 *)(iVar13 + 0x74) = *puVar4;" (assignment_expression "*(undefined4 *)(iVar13 + 0x74) = *puVar4" (pointer_expression "*(undefined4 *)(iVar13 + 0x74)" (* "*") (cast_expression "(undefined4 *)(iVar13 + 0x74)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x74)" (( "(") (binary_expression "iVar13 + 0x74" (identifier "iVar13") (+ "+") (number_literal "0x74")) () ")")))) (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (expression_statement "*(undefined4 *)(iVar13 + 0x78) = uVar9;" (assignment_expression "*(undefined4 *)(iVar13 + 0x78) = uVar9" (pointer_expression "*(undefined4 *)(iVar13 + 0x78)" (* "*") (cast_expression "(undefined4 *)(iVar13 + 0x78)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x78)" (( "(") (binary_expression "iVar13 + 0x78" (identifier "iVar13") (+ "+") (number_literal "0x78")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_000399eb:\n        iVar13 = *(int *)(puVar16 + 0x58);" (statement_identifier "LAB_000399eb") (: ":") (expression_statement "iVar13 = *(int *)(puVar16 + 0x58);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x58)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(puVar16 + 0x58)" (* "*") (cast_expression "(int *)(puVar16 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")"))))) (; ";"))) (if_statement "if (iVar13 == 0) goto LAB_00039f28;" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00039f28;" (goto "goto") (statement_identifier "LAB_00039f28") (; ";"))) (if_statement "if (iVar13 < 1) goto LAB_0003a030;" (if "if") (parenthesized_expression "(iVar13 < 1)" (( "(") (binary_expression "iVar13 < 1" (identifier "iVar13") (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_0003a030;" (goto "goto") (statement_identifier "LAB_0003a030") (; ";"))) (expression_statement "*(undefined4 *)(puVar16 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + 0x10) = 0" (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }" (else "else") (compound_statement "{\nLAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }\n        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);\n        iVar13 = 0;\n      }" ({ "{") (labeled_statement "LAB_00039f28:\n        if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }" (statement_identifier "LAB_00039f28") (: ":") (if_statement "if (*(int *)(param_1 + 0x120) != 0) {\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x120) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x120) != 0" (pointer_expression "*(int *)(param_1 + 0x120)" (* "*") (cast_expression "(int *)(param_1 + 0x120)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x120)" (( "(") (binary_expression "param_1 + 0x120" (identifier "param_1") (+ "+") (number_literal "0x120")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n          goto LAB_0003a00e;\n        }" ({ "{") (labeled_statement "LAB_0003a030:\n          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;" (statement_identifier "LAB_0003a030") (: ":") (expression_statement "uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;" (assignment_expression "uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe" (identifier "uVar14") (= "=") (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (& "&") (number_literal "0xfffffffe"))) (; ";"))) (expression_statement "*(uint *)(param_1 + 300) = uVar14;" (assignment_expression "*(uint *)(param_1 + 300) = uVar14" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (= "=") (identifier "uVar14")) (; ";")) (goto_statement "goto LAB_0003a00e;" (goto "goto") (statement_identifier "LAB_0003a00e") (; ";")) (} "}")))) (expression_statement "*(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);" (assignment_expression "*(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20)" (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x20)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x20)" (( "(") (binary_expression "puVar16 + 0x20" (identifier "puVar16") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "*(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;" (assignment_expression "*(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0" (pointer_expression "*(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13)" (* "*") (cast_expression "(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x124) + iVar13)" (( "(") (binary_expression "*(int *)(param_1 + 0x124) + iVar13" (pointer_expression "*(int *)(param_1 + 0x124)" (* "*") (cast_expression "(int *)(param_1 + 0x124)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x124)" (( "(") (binary_expression "param_1 + 0x124" (identifier "param_1") (+ "+") (number_literal "0x124")) () ")")))) (+ "+") (identifier "iVar13")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);" (assignment_expression "*(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124)" (pointer_expression "*(undefined4 *)(param_1 + 0xe8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xe8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe8)" (( "(") (binary_expression "param_1 + 0xe8" (identifier "param_1") (+ "+") (number_literal "0xe8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x124)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x124)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x124)" (( "(") (binary_expression "param_1 + 0x124" (identifier "param_1") (+ "+") (number_literal "0x124")) () ")"))))) (; ";")) (expression_statement "pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);" (assignment_expression "pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34)" (identifier "pcVar3") (= "=") (pointer_expression "*(code **)(unaff_retaddr[0x9f] + 0x34)" (* "*") (cast_expression "(code **)(unaff_retaddr[0x9f] + 0x34)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(unaff_retaddr[0x9f] + 0x34)" (( "(") (binary_expression "unaff_retaddr[0x9f] + 0x34" (subscript_expression "unaff_retaddr[0x9f]" (identifier "unaff_retaddr") ([ "[") (number_literal "0x9f") (] "]")) (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (if_statement "if (pcVar3 != (code *)0x0) {\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }" (if "if") (parenthesized_expression "(pcVar3 != (code *)0x0)" (( "(") (binary_expression "pcVar3 != (code *)0x0" (identifier "pcVar3") (!= "!=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;\n        iVar13 = (*pcVar3)();\n        if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }\n        goto LAB_00039d70;\n      }" ({ "{") (expression_statement "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;" (assignment_expression "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x56" (pointer_expression "*(undefined1 **)(puVar16 + -4)" (* "*") (cast_expression "(undefined1 **)(puVar16 + -4)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (binary_expression "puVar16 + 0x56" (identifier "puVar16") (+ "+") (number_literal "0x56"))) (; ";")) (expression_statement "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar16 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58"))) (; ";")) (expression_statement "*(int **)(puVar16 + -0xc) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0xc) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0xc)" (* "*") (cast_expression "(int **)(puVar16 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39a36;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39a36" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x39a36")) (; ";")) (expression_statement "iVar13 = (*pcVar3)();" (assignment_expression "iVar13 = (*pcVar3)()" (identifier "iVar13") (= "=") (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar13 == 0) {\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (puVar16[0x56] == '\0') goto LAB_00039a4c;\nLAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);\n          goto LAB_0003a00e;\n        }" ({ "{") (if_statement "if (puVar16[0x56] == '\0') goto LAB_00039a4c;" (if "if") (parenthesized_expression "(puVar16[0x56] == '\0')" (( "(") (binary_expression "puVar16[0x56] == '\0'" (subscript_expression "puVar16[0x56]" (identifier "puVar16") ([ "[") (number_literal "0x56") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00039a4c;" (goto "goto") (statement_identifier "LAB_00039a4c") (; ";"))) (labeled_statement "LAB_0003a008:\n          uVar14 = *(uint *)(param_1 + 300);" (statement_identifier "LAB_0003a008") (: ":") (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")"))))) (; ";"))) (goto_statement "goto LAB_0003a00e;" (goto "goto") (statement_identifier "LAB_0003a00e") (; ";")) (} "}"))) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";")) (} "}"))) (labeled_statement "LAB_00039a4c:\n      if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }" (statement_identifier "LAB_00039a4c") (: ":") (if_statement "if (*(char *)(param_1 + 0xd4) != '\0') {\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0xd4) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0xd4) != '\0'" (pointer_expression "*(char *)(param_1 + 0xd4)" (* "*") (cast_expression "(char *)(param_1 + 0xd4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd4)" (( "(") (binary_expression "param_1 + 0xd4" (identifier "param_1") (+ "+") (number_literal "0xd4")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        puVar16[0x57] = 0;\n        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;\n        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n        *(int **)(puVar16 + -0xc) = unaff_retaddr;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;\n        iVar13 = FUN_00025650();\n        if (iVar13 != 0) goto LAB_00039d70;\n        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);\n        if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }\n        if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }\n        if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }\n        goto LAB_0003a008;\n      }" ({ "{") (expression_statement "puVar16[0x57] = 0;" (assignment_expression "puVar16[0x57] = 0" (subscript_expression "puVar16[0x57]" (identifier "puVar16") ([ "[") (number_literal "0x57") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;" (assignment_expression "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x57" (pointer_expression "*(undefined1 **)(puVar16 + -4)" (* "*") (cast_expression "(undefined1 **)(puVar16 + -4)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (binary_expression "puVar16 + 0x57" (identifier "puVar16") (+ "+") (number_literal "0x57"))) (; ";")) (expression_statement "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar16 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58"))) (; ";")) (expression_statement "*(int **)(puVar16 + -0xc) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0xc) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0xc)" (* "*") (cast_expression "(int **)(puVar16 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39da6;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39da6" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x39da6")) (; ";")) (expression_statement "iVar13 = FUN_00025650();" (assignment_expression "iVar13 = FUN_00025650()" (identifier "iVar13") (= "=") (call_expression "FUN_00025650()" (identifier "FUN_00025650") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";"))) (expression_statement "pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);" (assignment_expression "pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34)" (identifier "pcVar3") (= "=") (pointer_expression "*(code **)(unaff_retaddr[0x9f] + 0x34)" (* "*") (cast_expression "(code **)(unaff_retaddr[0x9f] + 0x34)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(unaff_retaddr[0x9f] + 0x34)" (( "(") (binary_expression "unaff_retaddr[0x9f] + 0x34" (subscript_expression "unaff_retaddr[0x9f]" (identifier "unaff_retaddr") ([ "[") (number_literal "0x9f") (] "]")) (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (if_statement "if (((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))) {\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }" (if "if") (parenthesized_expression "(((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58)))" (( "(") (binary_expression "((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&\n           (0 < *(int *)(puVar16 + 0x58))" (parenthesized_expression "((pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4)))" (( "(") (binary_expression "(pcVar3 != (code *)0x0) &&\n            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))" (parenthesized_expression "(pcVar3 != (code *)0x0)" (( "(") (binary_expression "pcVar3 != (code *)0x0" (identifier "pcVar3") (!= "!=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))" (( "(") (binary_expression "(int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4)" (cast_expression "(int)(uint)(*(int *)(param_1 + 0xa0) != 0)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)(*(int *)(param_1 + 0xa0) != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)(param_1 + 0xa0) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0xa0) != 0" (pointer_expression "*(int *)(param_1 + 0xa0)" (* "*") (cast_expression "(int *)(param_1 + 0xa0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa0)" (( "(") (binary_expression "param_1 + 0xa0" (identifier "param_1") (+ "+") (number_literal "0xa0")) () ")")))) (!= "!=") (number_literal "0")) () ")")))) (<= "<=") (unary_expression "-*(int *)(param_1 + 0xa4)" (- "-") (pointer_expression "*(int *)(param_1 + 0xa4)" (* "*") (cast_expression "(int *)(param_1 + 0xa4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa4)" (( "(") (binary_expression "param_1 + 0xa4" (identifier "param_1") (+ "+") (number_literal "0xa4")) () ")")))))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(0 < *(int *)(puVar16 + 0x58))" (( "(") (binary_expression "0 < *(int *)(puVar16 + 0x58)" (number_literal "0") (< "<") (pointer_expression "*(int *)(puVar16 + 0x58)" (* "*") (cast_expression "(int *)(puVar16 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n          *(int **)(puVar16 + -0xc) = unaff_retaddr;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;\n          iVar13 = (*pcVar3)();\n          if (iVar13 != 0) goto LAB_00039d70;\n          if (puVar16[0x56] != '\0') goto LAB_0003a008;\n        }" ({ "{") (expression_statement "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;" (assignment_expression "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x56" (pointer_expression "*(undefined1 **)(puVar16 + -4)" (* "*") (cast_expression "(undefined1 **)(puVar16 + -4)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (binary_expression "puVar16 + 0x56" (identifier "puVar16") (+ "+") (number_literal "0x56"))) (; ";")) (expression_statement "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar16 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58"))) (; ";")) (expression_statement "*(int **)(puVar16 + -0xc) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0xc) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0xc)" (* "*") (cast_expression "(int **)(puVar16 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a21e;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a21e" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a21e")) (; ";")) (expression_statement "iVar13 = (*pcVar3)();" (assignment_expression "iVar13 = (*pcVar3)()" (identifier "iVar13") (= "=") (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";"))) (if_statement "if (puVar16[0x56] != '\0') goto LAB_0003a008;" (if "if") (parenthesized_expression "(puVar16[0x56] != '\0')" (( "(") (binary_expression "puVar16[0x56] != '\0'" (subscript_expression "puVar16[0x56]" (identifier "puVar16") ([ "[") (number_literal "0x56") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0003a008;" (goto "goto") (statement_identifier "LAB_0003a008") (; ";"))) (} "}"))) (if_statement "if (puVar16[0x57] == '\0') {\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }" (if "if") (parenthesized_expression "(puVar16[0x57] == '\0')" (( "(") (binary_expression "puVar16[0x57] == '\0'" (subscript_expression "puVar16[0x57]" (identifier "puVar16") ([ "[") (number_literal "0x57") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;\n          goto LAB_00039df2;\n        }" ({ "{") (if_statement "if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))\n          goto LAB_00039a67;" (if "if") (parenthesized_expression "((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))" (( "(") (binary_expression "(*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0')" (parenthesized_expression "(*(int *)(param_1 + 0xe8) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0xe8) != 0" (pointer_expression "*(int *)(param_1 + 0xe8)" (* "*") (cast_expression "(int *)(param_1 + 0xe8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe8)" (( "(") (binary_expression "param_1 + 0xe8" (identifier "param_1") (+ "+") (number_literal "0xe8")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(param_1 + 0xd4) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0xd4) == '\0'" (pointer_expression "*(char *)(param_1 + 0xd4)" (* "*") (cast_expression "(char *)(param_1 + 0xd4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd4)" (( "(") (binary_expression "param_1 + 0xd4" (identifier "param_1") (+ "+") (number_literal "0xd4")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (goto_statement "goto LAB_00039a67;" (goto "goto") (statement_identifier "LAB_00039a67") (; ";"))) (goto_statement "goto LAB_00039df2;" (goto "goto") (statement_identifier "LAB_00039df2") (; ";")) (} "}"))) (if_statement "if (0 < *(int *)(puVar16 + 0x58)) {\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }" (if "if") (parenthesized_expression "(0 < *(int *)(puVar16 + 0x58))" (( "(") (binary_expression "0 < *(int *)(puVar16 + 0x58)" (number_literal "0") (< "<") (pointer_expression "*(int *)(puVar16 + 0x58)" (* "*") (cast_expression "(int *)(puVar16 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")"))))) () ")")) (compound_statement "{\n          iVar13 = *unaff_retaddr;\n          *(undefined4 *)(puVar16 + -0xc) = 1;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;\n          cVar7 = FUN_00042890();\n          if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }\n        }" ({ "{") (expression_statement "iVar13 = *unaff_retaddr;" (assignment_expression "iVar13 = *unaff_retaddr" (identifier "iVar13") (= "=") (pointer_expression "*unaff_retaddr" (* "*") (identifier "unaff_retaddr"))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(iVar13 + 0x84)" (* "*") (cast_expression "(undefined4 *)(iVar13 + 0x84)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x84)" (( "(") (binary_expression "iVar13 + 0x84" (identifier "iVar13") (+ "+") (number_literal "0x84")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3aaa1" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3aaa1")) (; ";")) (expression_statement "cVar7 = FUN_00042890();" (assignment_expression "cVar7 = FUN_00042890()" (identifier "cVar7") (= "=") (call_expression "FUN_00042890()" (identifier "FUN_00042890") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar7 == '\0') {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }\n          else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }" (if "if") (parenthesized_expression "(cVar7 == '\0')" (( "(") (binary_expression "cVar7 == '\0'" (identifier "cVar7") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;\n            FUN_00027140();\n          }" ({ "{") (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xf0c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xf0c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf0c)" (( "(") (binary_expression "param_1 + 0xf0c" (identifier "param_1") (+ "+") (number_literal "0xf0c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "*(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;" (assignment_expression "*(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX" (pointer_expression "*(undefined **)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined **)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (binary_expression "&UNK_00047352 + unaff_EBX" (pointer_expression "&UNK_00047352" (& "&") (identifier "UNK_00047352")) (+ "+") (identifier "unaff_EBX"))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3acf0;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3acf0" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3acf0")) (; ";")) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" (identifier "FUN_00027140") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }" (else "else") (compound_statement "{\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;\n            FUN_00027140();\n            iVar13 = *(int *)(puVar16 + 0x58);\n            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n          }" ({ "{") (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xf0c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xf0c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf0c)" (( "(") (binary_expression "param_1 + 0xf0c" (identifier "param_1") (+ "+") (number_literal "0xf0c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "*(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;" (assignment_expression "*(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX" (pointer_expression "*(undefined **)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined **)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (binary_expression "&UNK_00047312 + unaff_EBX" (pointer_expression "&UNK_00047312" (& "&") (identifier "UNK_00047312")) (+ "+") (identifier "unaff_EBX"))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3aac3;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3aac3" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3aac3")) (; ";")) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" (identifier "FUN_00027140") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar13 = *(int *)(puVar16 + 0x58);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x58)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(puVar16 + 0x58)" (* "*") (cast_expression "(int *)(puVar16 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "*(undefined1 *)((int)unaff_retaddr + 0x261) = 1;" (assignment_expression "*(undefined1 *)((int)unaff_retaddr + 0x261) = 1" (pointer_expression "*(undefined1 *)((int)unaff_retaddr + 0x261)" (* "*") (cast_expression "(undefined1 *)((int)unaff_retaddr + 0x261)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_retaddr + 0x261)" (( "(") (binary_expression "(int)unaff_retaddr + 0x261" (cast_expression "(int)unaff_retaddr" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_retaddr")) (+ "+") (number_literal "0x261")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;" (assignment_expression "unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13" (subscript_expression "unaff_retaddr[0xcc]" (identifier "unaff_retaddr") ([ "[") (number_literal "0xcc") (] "]")) (= "=") (binary_expression "unaff_retaddr[0xcc] - iVar13" (subscript_expression "unaff_retaddr[0xcc]" (identifier "unaff_retaddr") ([ "[") (number_literal "0xcc") (] "]")) (- "-") (identifier "iVar13"))) (; ";")) (} "}")))) (} "}"))) (goto_statement "goto LAB_0003a008;" (goto "goto") (statement_identifier "LAB_0003a008") (; ";")) (} "}")))) (if_statement "if (*(int *)(param_1 + 0xe8) == 0) {\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }\n      else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0xe8) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0xe8) == 0" (pointer_expression "*(int *)(param_1 + 0xe8)" (* "*") (cast_expression "(int *)(param_1 + 0xe8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe8)" (( "(") (binary_expression "param_1 + 0xe8" (identifier "param_1") (+ "+") (number_literal "0xe8")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];\nLAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }\n        uVar14 = *(uint *)(param_1 + 300);\n        if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }\n      }" ({ "{") (labeled_statement "LAB_00039df2:\n        iVar13 = unaff_retaddr[0x9f];" (statement_identifier "LAB_00039df2") (: ":") (expression_statement "iVar13 = unaff_retaddr[0x9f];" (assignment_expression "iVar13 = unaff_retaddr[0x9f]" (identifier "iVar13") (= "=") (subscript_expression "unaff_retaddr[0x9f]" (identifier "unaff_retaddr") ([ "[") (number_literal "0x9f") (] "]"))) (; ";"))) (labeled_statement "LAB_00039df8:\n        iVar10 = *(int *)(iVar13 + 0x34);" (statement_identifier "LAB_00039df8") (: ":") (expression_statement "iVar10 = *(int *)(iVar13 + 0x34);" (assignment_expression "iVar10 = *(int *)(iVar13 + 0x34)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iVar13 + 0x34)" (* "*") (cast_expression "(int *)(iVar13 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x34)" (( "(") (binary_expression "iVar13 + 0x34" (identifier "iVar13") (+ "+") (number_literal "0x34")) () ")"))))) (; ";"))) (if_statement "if (iVar10 != 0) {\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }\n        }" ({ "{") (labeled_statement "LAB_00039dff:\n          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }" (statement_identifier "LAB_00039dff") (: ":") (if_statement "if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }" (if "if") (parenthesized_expression "((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0'))" (( "(") (binary_expression "(*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')" (parenthesized_expression "(*(int *)(puVar16 + 0x3c) != 0)" (( "(") (binary_expression "*(int *)(puVar16 + 0x3c) != 0" (pointer_expression "*(int *)(puVar16 + 0x3c)" (* "*") (cast_expression "(int *)(puVar16 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x3c)" (( "(") (binary_expression "puVar16 + 0x3c" (identifier "puVar16") (+ "+") (number_literal "0x3c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)((int)unaff_retaddr + 0x261) == '\0')" (( "(") (binary_expression "*(char *)((int)unaff_retaddr + 0x261) == '\0'" (pointer_expression "*(char *)((int)unaff_retaddr + 0x261)" (* "*") (cast_expression "(char *)((int)unaff_retaddr + 0x261)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_retaddr + 0x261)" (( "(") (binary_expression "(int)unaff_retaddr + 0x261" (cast_expression "(int)unaff_retaddr" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_retaddr")) (+ "+") (number_literal "0x261")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n            iVar13 = *(int *)(param_1 + 0x8f8);\n            iVar11 = *(int *)(puVar16 + 0x3c);\n            *(int *)(puVar16 + 0x10) = iVar10;\n            uVar14 = iVar13 + *(int *)(param_1 + 0x124);\n            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);\n            *(int *)(param_1 + 0xe8) = iVar10;\n            iVar13 = uVar14 - iVar10;\n            if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }\n            *(int *)(puVar16 + 0x58) = iVar13;\n            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;\n            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;\n            *(int **)(puVar16 + -0xc) = unaff_retaddr;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;\n            iVar13 = (**(code **)(puVar16 + 0x10))();\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }\n            goto LAB_00039d70;\n          }" ({ "{") (expression_statement "iVar13 = *(int *)(param_1 + 0x8f8);" (assignment_expression "iVar13 = *(int *)(param_1 + 0x8f8)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(param_1 + 0x8f8)" (* "*") (cast_expression "(int *)(param_1 + 0x8f8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x8f8)" (( "(") (binary_expression "param_1 + 0x8f8" (identifier "param_1") (+ "+") (number_literal "0x8f8")) () ")"))))) (; ";")) (expression_statement "iVar11 = *(int *)(puVar16 + 0x3c);" (assignment_expression "iVar11 = *(int *)(puVar16 + 0x3c)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(puVar16 + 0x3c)" (* "*") (cast_expression "(int *)(puVar16 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x3c)" (( "(") (binary_expression "puVar16 + 0x3c" (identifier "puVar16") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar16 + 0x10) = iVar10;" (assignment_expression "*(int *)(puVar16 + 0x10) = iVar10" (pointer_expression "*(int *)(puVar16 + 0x10)" (* "*") (cast_expression "(int *)(puVar16 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "uVar14 = iVar13 + *(int *)(param_1 + 0x124);" (assignment_expression "uVar14 = iVar13 + *(int *)(param_1 + 0x124)" (identifier "uVar14") (= "=") (binary_expression "iVar13 + *(int *)(param_1 + 0x124)" (identifier "iVar13") (+ "+") (pointer_expression "*(int *)(param_1 + 0x124)" (* "*") (cast_expression "(int *)(param_1 + 0x124)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x124)" (( "(") (binary_expression "param_1 + 0x124" (identifier "param_1") (+ "+") (number_literal "0x124")) () ")")))))) (; ";")) (expression_statement "iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);" (assignment_expression "iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8)" (identifier "iVar10") (= "=") (binary_expression "*(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8)" (pointer_expression "*(int *)(puVar16 + 0x58)" (* "*") (cast_expression "(int *)(puVar16 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")")))) (+ "+") (pointer_expression "*(int *)(param_1 + 0xe8)" (* "*") (cast_expression "(int *)(param_1 + 0xe8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe8)" (( "(") (binary_expression "param_1 + 0xe8" (identifier "param_1") (+ "+") (number_literal "0xe8")) () ")")))))) (; ";")) (expression_statement "*(int *)(param_1 + 0xe8) = iVar10;" (assignment_expression "*(int *)(param_1 + 0xe8) = iVar10" (pointer_expression "*(int *)(param_1 + 0xe8)" (* "*") (cast_expression "(int *)(param_1 + 0xe8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe8)" (( "(") (binary_expression "param_1 + 0xe8" (identifier "param_1") (+ "+") (number_literal "0xe8")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "iVar13 = uVar14 - iVar10;" (assignment_expression "iVar13 = uVar14 - iVar10" (identifier "iVar13") (= "=") (binary_expression "uVar14 - iVar10" (identifier "uVar14") (- "-") (identifier "iVar10"))) (; ";")) (if_statement "if ((uint)(iVar11 + iVar10) <= uVar14) {\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }" (if "if") (parenthesized_expression "((uint)(iVar11 + iVar10) <= uVar14)" (( "(") (binary_expression "(uint)(iVar11 + iVar10) <= uVar14" (call_expression "(uint)(iVar11 + iVar10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar11 + iVar10)" (( "(") (binary_expression "iVar11 + iVar10" (identifier "iVar11") (+ "+") (identifier "iVar10")) () ")"))) (<= "<=") (identifier "uVar14")) () ")")) (compound_statement "{\n              iVar13 = *(int *)(puVar16 + 0x3c);\n            }" ({ "{") (expression_statement "iVar13 = *(int *)(puVar16 + 0x3c);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x3c)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(puVar16 + 0x3c)" (* "*") (cast_expression "(int *)(puVar16 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x3c)" (( "(") (binary_expression "puVar16 + 0x3c" (identifier "puVar16") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (} "}"))) (expression_statement "*(int *)(puVar16 + 0x58) = iVar13;" (assignment_expression "*(int *)(puVar16 + 0x58) = iVar13" (pointer_expression "*(int *)(puVar16 + 0x58)" (* "*") (cast_expression "(int *)(puVar16 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (identifier "iVar13")) (; ";")) (expression_statement "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;" (assignment_expression "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x56" (pointer_expression "*(undefined1 **)(puVar16 + -4)" (* "*") (cast_expression "(undefined1 **)(puVar16 + -4)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (binary_expression "puVar16 + 0x56" (identifier "puVar16") (+ "+") (number_literal "0x56"))) (; ";")) (expression_statement "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + -8) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar16 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58"))) (; ";")) (expression_statement "*(int **)(puVar16 + -0xc) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0xc) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0xc)" (* "*") (cast_expression "(int **)(puVar16 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3aa4b" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3aa4b")) (; ";")) (expression_statement "iVar13 = (**(code **)(puVar16 + 0x10))();" (assignment_expression "iVar13 = (**(code **)(puVar16 + 0x10))()" (identifier "iVar13") (= "=") (call_expression "(**(code **)(puVar16 + 0x10))()" (parenthesized_expression "(**(code **)(puVar16 + 0x10))" (( "(") (pointer_expression "**(code **)(puVar16 + 0x10)" (* "*") (pointer_expression "*(code **)(puVar16 + 0x10)" (* "*") (cast_expression "(code **)(puVar16 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar13 == 0) {\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              uVar14 = *(uint *)(param_1 + 300);\n              if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }\n              goto LAB_0003a00e;\n            }" ({ "{") (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")"))))) (; ";")) (if_statement "if (puVar16[0x56] != '\0') {\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }" (if "if") (parenthesized_expression "(puVar16[0x56] != '\0')" (( "(") (binary_expression "puVar16[0x56] != '\0'" (subscript_expression "puVar16[0x56]" (identifier "puVar16") ([ "[") (number_literal "0x56") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                uVar14 = uVar14 | 1;\n                *(uint *)(param_1 + 300) = uVar14;\n              }" ({ "{") (expression_statement "uVar14 = uVar14 | 1;" (assignment_expression "uVar14 = uVar14 | 1" (identifier "uVar14") (= "=") (binary_expression "uVar14 | 1" (identifier "uVar14") (| "|") (number_literal "1"))) (; ";")) (expression_statement "*(uint *)(param_1 + 300) = uVar14;" (assignment_expression "*(uint *)(param_1 + 300) = uVar14" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (= "=") (identifier "uVar14")) (; ";")) (} "}"))) (goto_statement "goto LAB_0003a00e;" (goto "goto") (statement_identifier "LAB_0003a00e") (; ";")) (} "}"))) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";")) (} "}")))) (} "}"))) (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")"))))) (; ";")) (if_statement "if (*(int *)(puVar16 + 0x10) != 0) {\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }" (if "if") (parenthesized_expression "(*(int *)(puVar16 + 0x10) != 0)" (( "(") (binary_expression "*(int *)(puVar16 + 0x10) != 0" (pointer_expression "*(int *)(puVar16 + 0x10)" (* "*") (cast_expression "(int *)(puVar16 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar14 = uVar14 & 0xfffffffe;\n          *(uint *)(param_1 + 300) = uVar14;\n        }" ({ "{") (expression_statement "uVar14 = uVar14 & 0xfffffffe;" (assignment_expression "uVar14 = uVar14 & 0xfffffffe" (identifier "uVar14") (= "=") (binary_expression "uVar14 & 0xfffffffe" (identifier "uVar14") (& "&") (number_literal "0xfffffffe"))) (; ";")) (expression_statement "*(uint *)(param_1 + 300) = uVar14;" (assignment_expression "*(uint *)(param_1 + 300) = uVar14" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (= "=") (identifier "uVar14")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }" (else "else") (compound_statement "{\nLAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }\nLAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];\n        iVar10 = *(int *)(iVar13 + 0x34);\n        if (iVar10 != 0) goto LAB_00039dff;\n        uVar14 = *(uint *)(param_1 + 300);\n      }" ({ "{") (labeled_statement "LAB_00039a67:\n        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }" (statement_identifier "LAB_00039a67") (: ":") (if_statement "if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }" (if "if") (parenthesized_expression "((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0))" (( "(") (binary_expression "(0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)" (parenthesized_expression "(0 < *(int *)(puVar16 + 0x58))" (( "(") (binary_expression "0 < *(int *)(puVar16 + 0x58)" (number_literal "0") (< "<") (pointer_expression "*(int *)(puVar16 + 0x58)" (* "*") (cast_expression "(int *)(puVar16 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")"))))) () ")")) (|| "||") (parenthesized_expression "((puVar16[0x10] & 1) != 0)" (( "(") (binary_expression "(puVar16[0x10] & 1) != 0" (parenthesized_expression "(puVar16[0x10] & 1)" (( "(") (binary_expression "puVar16[0x10] & 1" (subscript_expression "puVar16[0x10]" (identifier "puVar16") ([ "[") (number_literal "0x10") (] "]")) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }\n          iVar13 = *(int *)(param_1 + 0x120);\n          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }\n          *(int *)(param_1 + 0x120) = iVar13 + 1;\n          if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }\n          uVar14 = *(uint *)(puVar16 + 0x58);\n          uVar2 = *(uint *)(param_1 + 0xa4);\n          uVar8 = *(uint *)(param_1 + 0xa0);\n          *(uint *)(puVar16 + 0x40) = uVar14;\n          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n          *(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n          if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }\n          uVar9 = *(undefined4 *)(puVar16 + 0x30);\n          uVar5 = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(param_1 + 0xac) = uVar9;\n          *(undefined4 *)(param_1 + 0xb0) = uVar5;\n          *(undefined4 *)(puVar16 + -8) = uVar5;\n          *(undefined4 *)(puVar16 + -0xc) = uVar9;\n          *(int *)(puVar16 + -0x10) = param_1;\n          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;\n          FUN_0001c950();\n          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;\n          uVar14 = *(uint *)(param_1 + 0xd8);\n          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;\n          cVar7 = *(char *)(param_1 + 0x131);\n          if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }\n          *(undefined4 *)(param_1 + 0xd8) = 0;\n          goto LAB_00039df8;\n        }" ({ "{") (if_statement "if (*(char *)(param_1 + 0x934) != '\0') {\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x934) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x934) != '\0'" (pointer_expression "*(char *)(param_1 + 0x934)" (* "*") (cast_expression "(char *)(param_1 + 0x934)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x934)" (( "(") (binary_expression "param_1 + 0x934" (identifier "param_1") (+ "+") (number_literal "0x934")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            *(undefined4 *)(puVar16 + -0xc) = 2;\n            *(int **)(puVar16 + -0x10) = unaff_retaddr;\n            iVar13 = 8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;\n            FUN_000414c0();\n            **(undefined1 **)(puVar16 + 0x38) = 1;\n            goto LAB_00039d70;\n          }" ({ "{") (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 2;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 2" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "2")) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "iVar13 = 8;" (assignment_expression "iVar13 = 8" (identifier "iVar13") (= "=") (number_literal "8")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ab68;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ab68" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3ab68")) (; ";")) (expression_statement "FUN_000414c0();" (call_expression "FUN_000414c0()" (identifier "FUN_000414c0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "**(undefined1 **)(puVar16 + 0x38) = 1;" (assignment_expression "**(undefined1 **)(puVar16 + 0x38) = 1" (pointer_expression "**(undefined1 **)(puVar16 + 0x38)" (* "*") (pointer_expression "*(undefined1 **)(puVar16 + 0x38)" (* "*") (cast_expression "(undefined1 **)(puVar16 + 0x38)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x38)" (( "(") (binary_expression "puVar16 + 0x38" (identifier "puVar16") (+ "+") (number_literal "0x38")) () ")"))))) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";")) (} "}"))) (expression_statement "iVar13 = *(int *)(param_1 + 0x120);" (assignment_expression "iVar13 = *(int *)(param_1 + 0x120)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(param_1 + 0x120)" (* "*") (cast_expression "(int *)(param_1 + 0x120)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x120)" (( "(") (binary_expression "param_1 + 0x120" (identifier "param_1") (+ "+") (number_literal "0x120")) () ")"))))) (; ";")) (if_statement "if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }" (if "if") (parenthesized_expression "(*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0)" (( "(") (binary_expression "*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0" (binary_expression "*(int *)(puVar16 + 0x10) == 0" (pointer_expression "*(int *)(puVar16 + 0x10)" (* "*") (cast_expression "(int *)(puVar16 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) (&& "&&") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }\n          }" ({ "{") (if_statement "if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {\n              iVar13 = 0;\n            }\n            else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }" (if "if") (parenthesized_expression "((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0)" (( "(") (binary_expression "(*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0" (parenthesized_expression "(*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003)" (( "(") (binary_expression "*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003" (pointer_expression "*(uint *)(unaff_retaddr[0x9f] + 0x40)" (* "*") (cast_expression "(uint *)(unaff_retaddr[0x9f] + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr[0x9f] + 0x40)" (( "(") (binary_expression "unaff_retaddr[0x9f] + 0x40" (subscript_expression "unaff_retaddr[0x9f]" (identifier "unaff_retaddr") ([ "[") (number_literal "0x9f") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (& "&") (number_literal "0x40003")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar13 = 0;\n            }" ({ "{") (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }" (else "else") (compound_statement "{\n              if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }\n              iVar13 = *(int *)(param_1 + 0xeb8);\n              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }\n              iVar13 = *(int *)(param_1 + 0x120);\n            }" ({ "{") (if_statement "if (*(int *)(param_1 + 0x138) != 0) {\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x138) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x138) != 0" (pointer_expression "*(int *)(param_1 + 0x138)" (* "*") (cast_expression "(int *)(param_1 + 0x138)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x138)" (( "(") (binary_expression "param_1 + 0x138" (identifier "param_1") (+ "+") (number_literal "0x138")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }\n                *(undefined1 *)(param_1 + 0x131) = 1;\n                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;\n                FUN_00027140();\n              }" ({ "{") (if_statement "if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }" (if "if") (parenthesized_expression "(*(char *)((int)unaff_retaddr + 0x249) != '\0')" (( "(") (binary_expression "*(char *)((int)unaff_retaddr + 0x249) != '\0'" (pointer_expression "*(char *)((int)unaff_retaddr + 0x249)" (* "*") (cast_expression "(char *)((int)unaff_retaddr + 0x249)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_retaddr + 0x249)" (( "(") (binary_expression "(int)unaff_retaddr + 0x249" (cast_expression "(int)unaff_retaddr" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_retaddr")) (+ "+") (number_literal "0x249")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  iVar13 = 0;\n                  *puVar17 = 1;\n                  goto LAB_00039d70;\n                }" ({ "{") (expression_statement "puVar17 = *(undefined1 **)(puVar16 + 0x38);" (assignment_expression "puVar17 = *(undefined1 **)(puVar16 + 0x38)" (identifier "puVar17") (= "=") (pointer_expression "*(undefined1 **)(puVar16 + 0x38)" (* "*") (cast_expression "(undefined1 **)(puVar16 + 0x38)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x38)" (( "(") (binary_expression "puVar16 + 0x38" (identifier "puVar16") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (= "=") (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (& "&") (number_literal "0xfffffffe"))) (; ";")) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar17 = 1;" (assignment_expression "*puVar17 = 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";")) (} "}"))) (expression_statement "*(undefined1 *)(param_1 + 0x131) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x131) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x131)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x131)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x131)" (( "(") (binary_expression "param_1 + 0x131" (identifier "param_1") (+ "+") (number_literal "0x131")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062" (pointer_expression "*(int *)(puVar16 + -0xc)" (* "*") (cast_expression "(int *)(puVar16 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (binary_expression "unaff_EBX + 0x47062" (identifier "unaff_EBX") (+ "+") (number_literal "0x47062"))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a521;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a521" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a521")) (; ";")) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" (identifier "FUN_00027140") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar13 = *(int *)(param_1 + 0xeb8);" (assignment_expression "iVar13 = *(int *)(param_1 + 0xeb8)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(param_1 + 0xeb8)" (* "*") (cast_expression "(int *)(param_1 + 0xeb8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xeb8)" (( "(") (binary_expression "param_1 + 0xeb8" (identifier "param_1") (+ "+") (number_literal "0xeb8")) () ")"))))) (; ";")) (if_statement "if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')) {\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }" (if "if") (parenthesized_expression "((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0'))" (( "(") (binary_expression "(((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&\n                 (*(char *)(param_1 + 0x131) == '\0')" (parenthesized_expression "(((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1))" (( "(") (binary_expression "((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)" (parenthesized_expression "((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0'))" (( "(") (binary_expression "(*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&\n                   (*(char *)(param_1 + 0xf8) == '\0')" (parenthesized_expression "(*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0" (binary_expression "*(int *)(param_1 + 0xebc) != 0" (pointer_expression "*(int *)(param_1 + 0xebc)" (* "*") (cast_expression "(int *)(param_1 + 0xebc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xebc)" (( "(") (binary_expression "param_1 + 0xebc" (identifier "param_1") (+ "+") (number_literal "0xebc")) () ")")))) (!= "!=") (number_literal "0")) (|| "||") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(param_1 + 0xf8) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0xf8) == '\0'" (pointer_expression "*(char *)(param_1 + 0xf8)" (* "*") (cast_expression "(char *)(param_1 + 0xf8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf8)" (( "(") (binary_expression "param_1 + 0xf8" (identifier "param_1") (+ "+") (number_literal "0xf8")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(param_1 + 0x818) == 1)" (( "(") (binary_expression "*(int *)(param_1 + 0x818) == 1" (pointer_expression "*(int *)(param_1 + 0x818)" (* "*") (cast_expression "(int *)(param_1 + 0x818)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x818)" (( "(") (binary_expression "param_1 + 0x818" (identifier "param_1") (+ "+") (number_literal "0x818")) () ")")))) (== "==") (number_literal "1")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(param_1 + 0x131) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x131) == '\0'" (pointer_expression "*(char *)(param_1 + 0x131)" (* "*") (cast_expression "(char *)(param_1 + 0x131)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x131)" (( "(") (binary_expression "param_1 + 0x131" (identifier "param_1") (+ "+") (number_literal "0x131")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }" ({ "{") (if_statement "if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))) {\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }\n                else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }" (if "if") (parenthesized_expression "((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94)))" (( "(") (binary_expression "(*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&\n                   (iVar13 == *(int *)(param_1 + 0x94))" (parenthesized_expression "(*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98))" (( "(") (binary_expression "*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)" (pointer_expression "*(int *)(param_1 + 0xebc)" (* "*") (cast_expression "(int *)(param_1 + 0xebc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xebc)" (( "(") (binary_expression "param_1 + 0xebc" (identifier "param_1") (+ "+") (number_literal "0xebc")) () ")")))) (== "==") (pointer_expression "*(int *)(param_1 + 0x98)" (* "*") (cast_expression "(int *)(param_1 + 0x98)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x98)" (( "(") (binary_expression "param_1 + 0x98" (identifier "param_1") (+ "+") (number_literal "0x98")) () ")"))))) () ")")) (&& "&&") (parenthesized_expression "(iVar13 == *(int *)(param_1 + 0x94))" (( "(") (binary_expression "iVar13 == *(int *)(param_1 + 0x94)" (identifier "iVar13") (== "==") (pointer_expression "*(int *)(param_1 + 0x94)" (* "*") (cast_expression "(int *)(param_1 + 0x94)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x94)" (( "(") (binary_expression "param_1 + 0x94" (identifier "param_1") (+ "+") (number_literal "0x94")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n                  *(int *)(puVar16 + -4) = iVar13;\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  iVar13 = 0;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;\n                  FUN_000414c0();\n                  puVar17 = *(undefined1 **)(puVar16 + 0x38);\n                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                  *puVar17 = 1;\n                }" ({ "{") (expression_statement "*(int *)(puVar16 + -4) = iVar13;" (assignment_expression "*(int *)(puVar16 + -4) = iVar13" (pointer_expression "*(int *)(puVar16 + -4)" (* "*") (cast_expression "(int *)(puVar16 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "iVar13")) (; ";")) (expression_statement "*(int *)(puVar16 + -8) = iVar13;" (assignment_expression "*(int *)(puVar16 + -8) = iVar13" (pointer_expression "*(int *)(puVar16 + -8)" (* "*") (cast_expression "(int *)(puVar16 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "iVar13")) (; ";")) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2" (pointer_expression "*(int *)(puVar16 + -0xc)" (* "*") (cast_expression "(int *)(puVar16 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (binary_expression "unaff_EBX + 0x473a2" (identifier "unaff_EBX") (+ "+") (number_literal "0x473a2"))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ad9a" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3ad9a")) (; ";")) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" (identifier "FUN_00027140") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ada6;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ada6" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3ada6")) (; ";")) (expression_statement "FUN_000414c0();" (call_expression "FUN_000414c0()" (identifier "FUN_000414c0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar17 = *(undefined1 **)(puVar16 + 0x38);" (assignment_expression "puVar17 = *(undefined1 **)(puVar16 + 0x38)" (identifier "puVar17") (= "=") (pointer_expression "*(undefined1 **)(puVar16 + 0x38)" (* "*") (cast_expression "(undefined1 **)(puVar16 + 0x38)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x38)" (( "(") (binary_expression "puVar16 + 0x38" (identifier "puVar16") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (= "=") (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (& "&") (number_literal "0xfffffffe"))) (; ";")) (expression_statement "*puVar17 = 1;" (assignment_expression "*puVar17 = 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }" (else "else") (compound_statement "{\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  iVar13 = 0x21;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;\n                  FUN_00027240();\n                }" ({ "{") (expression_statement "*(int **)(puVar16 + -4) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -4) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -4)" (* "*") (cast_expression "(int **)(puVar16 + -4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(int **)(puVar16 + -8) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -8) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -8)" (* "*") (cast_expression "(int **)(puVar16 + -8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "iVar13 = 0x21;" (assignment_expression "iVar13 = 0x21" (identifier "iVar13") (= "=") (number_literal "0x21")) (; ";")) (expression_statement "*(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;" (assignment_expression "*(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX" (pointer_expression "*(undefined **)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined **)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (binary_expression "&UNK_000473ce + unaff_EBX" (pointer_expression "&UNK_000473ce" (& "&") (identifier "UNK_000473ce")) (+ "+") (identifier "unaff_EBX"))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a571;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a571" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a571")) (; ";")) (expression_statement "FUN_00027240();" (call_expression "FUN_00027240()" (identifier "FUN_00027240") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";")) (} "}"))) (if_statement "if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }" (if "if") (parenthesized_expression "((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0))" (( "(") (binary_expression "(*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)" (parenthesized_expression "(*(int *)(param_1 + 0x810) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x810) != 0" (pointer_expression "*(int *)(param_1 + 0x810)" (* "*") (cast_expression "(int *)(param_1 + 0x810)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x810)" (( "(") (binary_expression "param_1 + 0x810" (identifier "param_1") (+ "+") (number_literal "0x810")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(param_1 + 0xeb4) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0xeb4) == 0" (pointer_expression "*(int *)(param_1 + 0xeb4)" (* "*") (cast_expression "(int *)(param_1 + 0xeb4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xeb4)" (( "(") (binary_expression "param_1 + 0xeb4" (identifier "param_1") (+ "+") (number_literal "0xeb4")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);\n                *(int *)(puVar16 + -0x10) = param_1;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;\n                cVar7 = FUN_000397f0();\n                if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }\n              }" ({ "{") (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x11c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x11c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x11c)" (( "(") (binary_expression "param_1 + 0x11c" (identifier "param_1") (+ "+") (number_literal "0x11c")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a5a3" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a5a3")) (; ";")) (expression_statement "cVar7 = FUN_000397f0();" (assignment_expression "cVar7 = FUN_000397f0()" (identifier "cVar7") (= "=") (call_expression "FUN_000397f0()" (identifier "FUN_000397f0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar7 == '\0') {\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }" (if "if") (parenthesized_expression "(cVar7 == '\0')" (( "(") (binary_expression "cVar7 == '\0'" (identifier "cVar7") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                  **(undefined1 **)(puVar16 + 0x38) = 1;\n                  *(undefined4 *)(param_1 + 0xf48) = 0x130;\n                  *(int **)(puVar16 + -4) = unaff_retaddr;\n                  *(int **)(puVar16 + -8) = unaff_retaddr;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;\n                  FUN_00027140();\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;\n                  FUN_000414c0();\n                  goto LAB_00039e7c;\n                }" ({ "{") (expression_statement "**(undefined1 **)(puVar16 + 0x38) = 1;" (assignment_expression "**(undefined1 **)(puVar16 + 0x38) = 1" (pointer_expression "**(undefined1 **)(puVar16 + 0x38)" (* "*") (pointer_expression "*(undefined1 **)(puVar16 + 0x38)" (* "*") (cast_expression "(undefined1 **)(puVar16 + 0x38)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x38)" (( "(") (binary_expression "puVar16 + 0x38" (identifier "puVar16") (+ "+") (number_literal "0x38")) () ")"))))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0xf48) = 0x130;" (assignment_expression "*(undefined4 *)(param_1 + 0xf48) = 0x130" (pointer_expression "*(undefined4 *)(param_1 + 0xf48)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xf48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf48)" (( "(") (binary_expression "param_1 + 0xf48" (identifier "param_1") (+ "+") (number_literal "0xf48")) () ")")))) (= "=") (number_literal "0x130")) (; ";")) (expression_statement "*(int **)(puVar16 + -4) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -4) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -4)" (* "*") (cast_expression "(int **)(puVar16 + -4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(int **)(puVar16 + -8) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -8) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -8)" (* "*") (cast_expression "(int **)(puVar16 + -8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;" (assignment_expression "*(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX" (pointer_expression "*(undefined **)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined **)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (binary_expression "&UNK_0004740e + unaff_EBX" (pointer_expression "&UNK_0004740e" (& "&") (identifier "UNK_0004740e")) (+ "+") (identifier "unaff_EBX"))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a5cc" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a5cc")) (; ";")) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" (identifier "FUN_00027140") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a5d6" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a5d6")) (; ";")) (expression_statement "FUN_000414c0();" (call_expression "FUN_000414c0()" (identifier "FUN_000414c0") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_00039e7c;" (goto "goto") (statement_identifier "LAB_00039e7c") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar13 = *(int *)(param_1 + 0x120);" (assignment_expression "iVar13 = *(int *)(param_1 + 0x120)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(param_1 + 0x120)" (* "*") (cast_expression "(int *)(param_1 + 0x120)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x120)" (( "(") (binary_expression "param_1 + 0x120" (identifier "param_1") (+ "+") (number_literal "0x120")) () ")"))))) (; ";")) (} "}")))) (} "}"))) (expression_statement "*(int *)(param_1 + 0x120) = iVar13 + 1;" (assignment_expression "*(int *)(param_1 + 0x120) = iVar13 + 1" (pointer_expression "*(int *)(param_1 + 0x120)" (* "*") (cast_expression "(int *)(param_1 + 0x120)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x120)" (( "(") (binary_expression "param_1 + 0x120" (identifier "param_1") (+ "+") (number_literal "0x120")) () ")")))) (= "=") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*(char *)(param_1 + 0x93c) == '\0') {\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }\n          else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x93c) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x93c) == '\0'" (pointer_expression "*(char *)(param_1 + 0x93c)" (* "*") (cast_expression "(char *)(param_1 + 0x93c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x93c)" (( "(") (binary_expression "param_1 + 0x93c" (identifier "param_1") (+ "+") (number_literal "0x93c")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            iVar13 = *(int *)(param_1 + 0xd8);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }\n          }" ({ "{") (labeled_statement "LAB_0003a05d:\n            if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }" (statement_identifier "LAB_0003a05d") (: ":") (if_statement "if (*(char *)(param_1 + 0x144) != '\0') {\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x144) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x144) != '\0'" (pointer_expression "*(char *)(param_1 + 0x144)" (* "*") (cast_expression "(char *)(param_1 + 0x144)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x144)" (( "(") (binary_expression "param_1 + 0x144" (identifier "param_1") (+ "+") (number_literal "0x144")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;\n              iVar10 = FUN_0003f2e0();\n              if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }\n              if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }\n            }" ({ "{") (labeled_statement "LAB_0003a280:\n              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;" (statement_identifier "LAB_0003a280") (: ":") (expression_statement "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;" (assignment_expression "*(undefined1 **)(puVar16 + -4) = puVar16 + 0x58" (pointer_expression "*(undefined1 **)(puVar16 + -4)" (* "*") (cast_expression "(undefined1 **)(puVar16 + -4)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58"))) (; ";"))) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xe8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xe8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe8)" (( "(") (binary_expression "param_1 + 0xe8" (identifier "param_1") (+ "+") (number_literal "0xe8")) () ")"))))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a295;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a295" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a295")) (; ";")) (expression_statement "iVar10 = FUN_0003f2e0();" (assignment_expression "iVar10 = FUN_0003f2e0()" (identifier "iVar10") (= "=") (call_expression "FUN_0003f2e0()" (identifier "FUN_0003f2e0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (0 < iVar10) {\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }" (if "if") (parenthesized_expression "(0 < iVar10)" (( "(") (binary_expression "0 < iVar10" (number_literal "0") (< "<") (identifier "iVar10")) () ")")) (compound_statement "{\n                if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }\n                goto LAB_00039d70;\n              }" ({ "{") (if_statement "if (iVar10 == 4) {\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }\n                else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }" (if "if") (parenthesized_expression "(iVar10 == 4)" (( "(") (binary_expression "iVar10 == 4" (identifier "iVar10") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n                  iVar13 = 0x17;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;\n                  FUN_00027240();\n                }" ({ "{") (expression_statement "iVar13 = 0x17;" (assignment_expression "iVar13 = 0x17" (identifier "iVar13") (= "=") (number_literal "0x17")) (; ";")) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e" (pointer_expression "*(int *)(puVar16 + -0xc)" (* "*") (cast_expression "(int *)(puVar16 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (binary_expression "unaff_EBX + 0x4707e" (identifier "unaff_EBX") (+ "+") (number_literal "0x4707e"))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ad5d" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3ad5d")) (; ";")) (expression_statement "FUN_00027240();" (call_expression "FUN_00027240()" (identifier "FUN_00027240") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }" (else "else") (compound_statement "{\n                  iVar13 = 0x38;\n                  *(int *)(puVar16 + -0x10) = iVar10;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;\n                  uVar9 = FUN_0003f850();\n                  *(undefined4 *)(puVar16 + -8) = uVar9;\n                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;\n                  *(int *)(puVar16 + -0x10) = param_1;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;\n                  FUN_00027240();\n                }" ({ "{") (expression_statement "iVar13 = 0x38;" (assignment_expression "iVar13 = 0x38" (identifier "iVar13") (= "=") (number_literal "0x38")) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = iVar10;" (assignment_expression "*(int *)(puVar16 + -0x10) = iVar10" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3ac90;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3ac90" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3ac90")) (; ";")) (expression_statement "uVar9 = FUN_0003f850();" (assignment_expression "uVar9 = FUN_0003f850()" (identifier "uVar9") (= "=") (call_expression "FUN_0003f850()" (identifier "FUN_0003f850") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -8) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092" (pointer_expression "*(int *)(puVar16 + -0xc)" (* "*") (cast_expression "(int *)(puVar16 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (binary_expression "unaff_EBX + 0x47092" (identifier "unaff_EBX") (+ "+") (number_literal "0x47092"))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3aca1;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3aca1" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3aca1")) (; ";")) (expression_statement "FUN_00027240();" (call_expression "FUN_00027240()" (identifier "FUN_00027240") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";")) (} "}"))) (if_statement "if (iVar10 == -1) {\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }" (if "if") (parenthesized_expression "(iVar10 == -1)" (( "(") (binary_expression "iVar10 == -1" (identifier "iVar10") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n                iVar13 = unaff_retaddr[0xd];\n                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n                if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }\n              }" ({ "{") (expression_statement "iVar13 = unaff_retaddr[0xd];" (assignment_expression "iVar13 = unaff_retaddr[0xd]" (identifier "iVar13") (= "=") (subscript_expression "unaff_retaddr[0xd]" (identifier "unaff_retaddr") ([ "[") (number_literal "0xd") (] "]"))) (; ";")) (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (= "=") (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (& "&") (number_literal "0xfffffffe"))) (; ";")) (if_statement "if (iVar13 != 0) {\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  *(int *)(puVar16 + -8) = iVar13;\n                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;\n                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;\n                  FUN_00027140();\n                  iVar10 = *unaff_retaddr;\n                  *(undefined4 *)(puVar16 + -0xc) = 1;\n                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;\n                  cVar7 = FUN_00042890();\n                  if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }\n                }" ({ "{") (expression_statement "*(int *)(puVar16 + -8) = iVar13;" (assignment_expression "*(int *)(puVar16 + -8) = iVar13" (pointer_expression "*(int *)(puVar16 + -8)" (* "*") (cast_expression "(int *)(puVar16 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "iVar13")) (; ";")) (expression_statement "*(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;" (assignment_expression "*(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX" (pointer_expression "*(undefined **)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined **)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (binary_expression "&UNK_0004742e + unaff_EBX" (pointer_expression "&UNK_0004742e" (& "&") (identifier "UNK_0004742e")) (+ "+") (identifier "unaff_EBX"))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = *unaff_retaddr;" (assignment_expression "*(int *)(puVar16 + -0x10) = *unaff_retaddr" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*unaff_retaddr" (* "*") (identifier "unaff_retaddr"))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a2ce" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a2ce")) (; ";")) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" (identifier "FUN_00027140") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar10 = *unaff_retaddr;" (assignment_expression "iVar10 = *unaff_retaddr" (identifier "iVar10") (= "=") (pointer_expression "*unaff_retaddr" (* "*") (identifier "unaff_retaddr"))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(iVar10 + 0x84)" (* "*") (cast_expression "(undefined4 *)(iVar10 + 0x84)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x84)" (( "(") (binary_expression "iVar10 + 0x84" (identifier "iVar10") (+ "+") (number_literal "0x84")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a2e0" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a2e0")) (; ";")) (expression_statement "cVar7 = FUN_00042890();" (assignment_expression "cVar7 = FUN_00042890()" (identifier "cVar7") (= "=") (call_expression "FUN_00042890()" (identifier "FUN_00042890") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar7 != '\0') {\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }" (if "if") (parenthesized_expression "(cVar7 != '\0')" (( "(") (binary_expression "cVar7 != '\0'" (identifier "cVar7") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                    *(int *)(puVar16 + -8) = iVar13;\n                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;\n                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;\n                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;\n                    FUN_00027140();\n                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;\n                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                  }" ({ "{") (expression_statement "*(int *)(puVar16 + -8) = iVar13;" (assignment_expression "*(int *)(puVar16 + -8) = iVar13" (pointer_expression "*(int *)(puVar16 + -8)" (* "*") (cast_expression "(int *)(puVar16 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "iVar13")) (; ";")) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9" (pointer_expression "*(int *)(puVar16 + -0xc)" (* "*") (cast_expression "(int *)(puVar16 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (binary_expression "unaff_EBX + 0x470a9" (identifier "unaff_EBX") (+ "+") (number_literal "0x470a9"))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = *unaff_retaddr;" (assignment_expression "*(int *)(puVar16 + -0x10) = *unaff_retaddr" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*unaff_retaddr" (* "*") (identifier "unaff_retaddr"))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a2fe" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a2fe")) (; ";")) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" (identifier "FUN_00027140") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;" (assignment_expression "unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13" (subscript_expression "unaff_retaddr[0xcc]" (identifier "unaff_retaddr") ([ "[") (number_literal "0xcc") (] "]")) (= "=") (binary_expression "unaff_retaddr[0xcc] - iVar13" (subscript_expression "unaff_retaddr[0xcc]" (identifier "unaff_retaddr") ([ "[") (number_literal "0xcc") (] "]")) (- "-") (identifier "iVar13"))) (; ";")) (expression_statement "*(undefined1 *)((int)unaff_retaddr + 0x261) = 1;" (assignment_expression "*(undefined1 *)((int)unaff_retaddr + 0x261) = 1" (pointer_expression "*(undefined1 *)((int)unaff_retaddr + 0x261)" (* "*") (cast_expression "(undefined1 *)((int)unaff_retaddr + 0x261)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_retaddr + 0x261)" (( "(") (binary_expression "(int)unaff_retaddr + 0x261" (cast_expression "(int)unaff_retaddr" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_retaddr")) (+ "+") (number_literal "0x261")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}")))) (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0xb0)" (identifier "uVar9") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xb0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")"))))) (; ";")) (expression_statement "iVar13 = *(int *)(param_1 + 0xd8);" (assignment_expression "iVar13 = *(int *)(param_1 + 0xd8)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(param_1 + 0xd8)" (* "*") (cast_expression "(int *)(param_1 + 0xd8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd8)" (( "(") (binary_expression "param_1 + 0xd8" (identifier "param_1") (+ "+") (number_literal "0xd8")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);" (assignment_expression "*(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac)" (pointer_expression "*(undefined4 *)(puVar16 + 0x28)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x28)" (( "(") (binary_expression "puVar16 + 0x28" (identifier "puVar16") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xac)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xac)" (( "(") (binary_expression "param_1 + 0xac" (identifier "param_1") (+ "+") (number_literal "0xac")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x2c) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + 0x2c) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x2c)" (( "(") (binary_expression "puVar16 + 0x2c" (identifier "puVar16") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (if_statement "if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }" (if "if") (parenthesized_expression "((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0'))" (( "(") (binary_expression "(iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')" (parenthesized_expression "(iVar13 == 1)" (( "(") (binary_expression "iVar13 == 1" (identifier "iVar13") (== "==") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(param_1 + 0x131) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x131) == '\0'" (pointer_expression "*(char *)(param_1 + 0x131)" (* "*") (cast_expression "(char *)(param_1 + 0x131)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x131)" (( "(") (binary_expression "param_1 + 0x131" (identifier "param_1") (+ "+") (number_literal "0x131")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n              uVar2 = *(uint *)(param_1 + 0xe4);\n              puVar1 = (uint *)(puVar16 + 0x28);\n              uVar14 = *puVar1;\n              *puVar1 = *puVar1 + uVar2;\n              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);\n              uVar9 = *(undefined4 *)(puVar16 + 0x2c);\n              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(param_1 + 0xb0) = uVar9;\n            }" ({ "{") (expression_statement "uVar2 = *(uint *)(param_1 + 0xe4);" (assignment_expression "uVar2 = *(uint *)(param_1 + 0xe4)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(param_1 + 0xe4)" (* "*") (cast_expression "(uint *)(param_1 + 0xe4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe4)" (( "(") (binary_expression "param_1 + 0xe4" (identifier "param_1") (+ "+") (number_literal "0xe4")) () ")"))))) (; ";")) (expression_statement "puVar1 = (uint *)(puVar16 + 0x28);" (assignment_expression "puVar1 = (uint *)(puVar16 + 0x28)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(puVar16 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x28)" (( "(") (binary_expression "puVar16 + 0x28" (identifier "puVar16") (+ "+") (number_literal "0x28")) () ")")))) (; ";")) (expression_statement "uVar14 = *puVar1;" (assignment_expression "uVar14 = *puVar1" (identifier "uVar14") (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (expression_statement "*puVar1 = *puVar1 + uVar2;" (assignment_expression "*puVar1 = *puVar1 + uVar2" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (binary_expression "*puVar1 + uVar2" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (+ "+") (identifier "uVar2"))) (; ";")) (expression_statement "*(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);" (assignment_expression "*(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2)" (pointer_expression "*(uint *)(puVar16 + 0x2c)" (* "*") (cast_expression "(uint *)(puVar16 + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x2c)" (( "(") (binary_expression "puVar16 + 0x2c" (identifier "puVar16") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (binary_expression "*(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2)" (pointer_expression "*(int *)(puVar16 + 0x2c)" (* "*") (cast_expression "(int *)(puVar16 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x2c)" (( "(") (binary_expression "puVar16 + 0x2c" (identifier "puVar16") (+ "+") (number_literal "0x2c")) () ")")))) (+ "+") (cast_expression "(uint)CARRY4(uVar14,uVar2)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar14,uVar2)" (identifier "CARRY4") (argument_list "(uVar14,uVar2)" (( "(") (identifier "uVar14") (, ",") (identifier "uVar2") () ")")))))) (; ";")) (expression_statement "uVar9 = *(undefined4 *)(puVar16 + 0x2c);" (assignment_expression "uVar9 = *(undefined4 *)(puVar16 + 0x2c)" (identifier "uVar9") (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x2c)" (( "(") (binary_expression "puVar16 + 0x2c" (identifier "puVar16") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);" (assignment_expression "*(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28)" (pointer_expression "*(undefined4 *)(param_1 + 0xac)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xac)" (( "(") (binary_expression "param_1 + 0xac" (identifier "param_1") (+ "+") (number_literal "0xac")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x28)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x28)" (( "(") (binary_expression "puVar16 + 0x28" (identifier "puVar16") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0xb0) = uVar9;" (assignment_expression "*(undefined4 *)(param_1 + 0xb0) = uVar9" (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xb0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }" (else "else") (compound_statement "{\n            if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }\n            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);\n            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);\n            *(undefined4 *)(puVar16 + -0xc) = 3;\n            *(int *)(puVar16 + -0x10) = param_1;\n            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;\n            FUN_00027090();\n            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;\n            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;\n            uVar9 = *(undefined4 *)(param_1 + 0xb0);\n            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);\n            *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n          }" ({ "{") (if_statement "if (*(int *)(param_1 + 0xd8) == 0) {\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0xd8) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0xd8) == 0" (pointer_expression "*(int *)(param_1 + 0xd8)" (* "*") (cast_expression "(int *)(param_1 + 0xd8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd8)" (( "(") (binary_expression "param_1 + 0xd8" (identifier "param_1") (+ "+") (number_literal "0xd8")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n              *(undefined4 *)(puVar16 + -0xc) = 3;\n              *(int *)(puVar16 + -0x10) = param_1;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;\n              FUN_00027090();\n              goto LAB_0003a05d;\n            }" ({ "{") (labeled_statement "LAB_0003a048:\n              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);" (statement_identifier "LAB_0003a048") (: ":") (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")"))))) (; ";"))) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xe8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xe8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe8)" (( "(") (binary_expression "param_1 + 0xe8" (identifier "param_1") (+ "+") (number_literal "0xe8")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 3;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 3" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "3")) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a05a;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a05a" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a05a")) (; ";")) (expression_statement "FUN_00027090();" (call_expression "FUN_00027090()" (identifier "FUN_00027090") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_0003a05d;" (goto "goto") (statement_identifier "LAB_0003a05d") (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xe4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xe4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe4)" (( "(") (binary_expression "param_1 + 0xe4" (identifier "param_1") (+ "+") (number_literal "0xe4")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xc60)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc60)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc60)" (( "(") (binary_expression "param_1 + 0xc60" (identifier "param_1") (+ "+") (number_literal "0xc60")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 3;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 3" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "3")) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39ad1;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39ad1" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x39ad1")) (; ";")) (expression_statement "FUN_00027090();" (call_expression "FUN_00027090()" (identifier "FUN_00027090") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0xd8) == 1)" (( "(") (binary_expression "*(int *)(param_1 + 0xd8) == 1" (pointer_expression "*(int *)(param_1 + 0xd8)" (* "*") (cast_expression "(int *)(param_1 + 0xd8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd8)" (( "(") (binary_expression "param_1 + 0xd8" (identifier "param_1") (+ "+") (number_literal "0xd8")) () ")")))) (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_0003a048;" (goto "goto") (statement_identifier "LAB_0003a048") (; ";"))) (if_statement "if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x144) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x144) != '\0'" (pointer_expression "*(char *)(param_1 + 0x144)" (* "*") (cast_expression "(char *)(param_1 + 0x144)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x144)" (( "(") (binary_expression "param_1 + 0x144" (identifier "param_1") (+ "+") (number_literal "0x144")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0003a280;" (goto "goto") (statement_identifier "LAB_0003a280") (; ";"))) (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0xb0)" (identifier "uVar9") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xb0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);" (assignment_expression "*(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac)" (pointer_expression "*(undefined4 *)(puVar16 + 0x28)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x28)" (( "(") (binary_expression "puVar16 + 0x28" (identifier "puVar16") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xac)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xac)" (( "(") (binary_expression "param_1 + 0xac" (identifier "param_1") (+ "+") (number_literal "0xac")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x2c) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + 0x2c) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x2c)" (( "(") (binary_expression "puVar16 + 0x2c" (identifier "puVar16") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (} "}")))) (expression_statement "uVar14 = *(uint *)(puVar16 + 0x58);" (assignment_expression "uVar14 = *(uint *)(puVar16 + 0x58)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(puVar16 + 0x58)" (* "*") (cast_expression "(uint *)(puVar16 + 0x58)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "uVar2 = *(uint *)(param_1 + 0xa4);" (assignment_expression "uVar2 = *(uint *)(param_1 + 0xa4)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(param_1 + 0xa4)" (* "*") (cast_expression "(uint *)(param_1 + 0xa4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa4)" (( "(") (binary_expression "param_1 + 0xa4" (identifier "param_1") (+ "+") (number_literal "0xa4")) () ")"))))) (; ";")) (expression_statement "uVar8 = *(uint *)(param_1 + 0xa0);" (assignment_expression "uVar8 = *(uint *)(param_1 + 0xa0)" (identifier "uVar8") (= "=") (pointer_expression "*(uint *)(param_1 + 0xa0)" (* "*") (cast_expression "(uint *)(param_1 + 0xa0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa0)" (( "(") (binary_expression "param_1 + 0xa0" (identifier "param_1") (+ "+") (number_literal "0xa0")) () ")"))))) (; ";")) (expression_statement "*(uint *)(puVar16 + 0x40) = uVar14;" (assignment_expression "*(uint *)(puVar16 + 0x40) = uVar14" (pointer_expression "*(uint *)(puVar16 + 0x40)" (* "*") (cast_expression "(uint *)(puVar16 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x40)" (( "(") (binary_expression "puVar16 + 0x40" (identifier "puVar16") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "uVar14")) (; ";")) (expression_statement "*(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);" (assignment_expression "*(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28)" (pointer_expression "*(uint *)(puVar16 + 0x30)" (* "*") (cast_expression "(uint *)(puVar16 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x30)" (( "(") (binary_expression "puVar16 + 0x30" (identifier "puVar16") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (binary_expression "uVar14 + *(uint *)(puVar16 + 0x28)" (identifier "uVar14") (+ "+") (pointer_expression "*(uint *)(puVar16 + 0x28)" (* "*") (cast_expression "(uint *)(puVar16 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x28)" (( "(") (binary_expression "puVar16 + 0x28" (identifier "puVar16") (+ "+") (number_literal "0x28")) () ")")))))) (; ";")) (expression_statement "*(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));" (assignment_expression "*(uint *)(puVar16 + 0x34) =\n               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" (pointer_expression "*(uint *)(puVar16 + 0x34)" (* "*") (cast_expression "(uint *)(puVar16 + 0x34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x34)" (( "(") (binary_expression "puVar16 + 0x34" (identifier "puVar16") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (binary_expression "((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" (binary_expression "((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c)" (parenthesized_expression "((int)uVar14 >> 0x1f)" (( "(") (binary_expression "(int)uVar14 >> 0x1f" (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14")) (>> ">>") (number_literal "0x1f")) () ")")) (+ "+") (pointer_expression "*(int *)(puVar16 + 0x2c)" (* "*") (cast_expression "(int *)(puVar16 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x2c)" (( "(") (binary_expression "puVar16 + 0x2c" (identifier "puVar16") (+ "+") (number_literal "0x2c")) () ")"))))) (+ "+") (cast_expression "(uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" (identifier "CARRY4") (argument_list "(uVar14,*(uint *)(puVar16 + 0x28))" (( "(") (identifier "uVar14") (, ",") (pointer_expression "*(uint *)(puVar16 + 0x28)" (* "*") (cast_expression "(uint *)(puVar16 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x28)" (( "(") (binary_expression "puVar16 + 0x28" (identifier "puVar16") (+ "+") (number_literal "0x28")) () ")")))) () ")")))))) (; ";")) (if_statement "if (((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }" (if "if") (parenthesized_expression "(((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0))" (( "(") (binary_expression "((uVar2 & uVar8) != 0xffffffff) &&\n             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)" (parenthesized_expression "((uVar2 & uVar8) != 0xffffffff)" (( "(") (binary_expression "(uVar2 & uVar8) != 0xffffffff" (parenthesized_expression "(uVar2 & uVar8)" (( "(") (binary_expression "uVar2 & uVar8" (identifier "uVar2") (& "&") (identifier "uVar8")) () ")")) (!= "!=") (number_literal "0xffffffff")) () ")")) (&& "&&") (parenthesized_expression "(iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)" (( "(") (comma_expression "iVar13 = *(int *)(puVar16 + 0x34) - uVar2,\n             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x34) - uVar2" (identifier "iVar13") (= "=") (binary_expression "*(int *)(puVar16 + 0x34) - uVar2" (pointer_expression "*(int *)(puVar16 + 0x34)" (* "*") (cast_expression "(int *)(puVar16 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x34)" (( "(") (binary_expression "puVar16 + 0x34" (identifier "puVar16") (+ "+") (number_literal "0x34")) () ")")))) (- "-") (identifier "uVar2"))) (, ",") (binary_expression "(SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==\n             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0" (parenthesized_expression "(SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8)))" (( "(") (binary_expression "SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=\n             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))" (call_expression "SBORROW4(*(int *)(puVar16 + 0x34),uVar2)" (identifier "SBORROW4") (argument_list "(*(int *)(puVar16 + 0x34),uVar2)" (( "(") (pointer_expression "*(int *)(puVar16 + 0x34)" (* "*") (cast_expression "(int *)(puVar16 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x34)" (( "(") (binary_expression "puVar16 + 0x34" (identifier "puVar16") (+ "+") (number_literal "0x34")) () ")")))) (, ",") (identifier "uVar2") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))" (identifier "SBORROW4") (argument_list "(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))" (( "(") (identifier "iVar13") (, ",") (call_expression "(uint)(*(uint *)(puVar16 + 0x30) < uVar8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)(puVar16 + 0x30) < uVar8)" (( "(") (binary_expression "*(uint *)(puVar16 + 0x30) < uVar8" (pointer_expression "*(uint *)(puVar16 + 0x30)" (* "*") (cast_expression "(uint *)(puVar16 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x30)" (( "(") (binary_expression "puVar16 + 0x30" (identifier "puVar16") (+ "+") (number_literal "0x30")) () ")")))) (< "<") (identifier "uVar8")) () ")"))) () ")")))) () ")")) (== "==") (binary_expression "(int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0" (cast_expression "(int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8))" (( "(") (binary_expression "iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)" (identifier "iVar13") (- "-") (call_expression "(uint)(*(uint *)(puVar16 + 0x30) < uVar8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)(puVar16 + 0x30) < uVar8)" (( "(") (binary_expression "*(uint *)(puVar16 + 0x30) < uVar8" (pointer_expression "*(uint *)(puVar16 + 0x30)" (* "*") (cast_expression "(uint *)(puVar16 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x30)" (( "(") (binary_expression "puVar16 + 0x30" (identifier "puVar16") (+ "+") (number_literal "0x30")) () ")")))) (< "<") (identifier "uVar8")) () ")")))) () ")"))) (< "<") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\n            iVar13 = *(int *)(puVar16 + 0x28);\n            iVar10 = *(int *)(puVar16 + 0x40);\n            *(uint *)(puVar16 + 0x30) = uVar8;\n            iVar11 = (iVar10 + iVar13) - uVar8;\n            *(int *)(puVar16 + 0x3c) = iVar11;\n            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }\n            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;\n            if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }\n            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;\n          }" ({ "{") (expression_statement "iVar13 = *(int *)(puVar16 + 0x28);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x28)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(puVar16 + 0x28)" (* "*") (cast_expression "(int *)(puVar16 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x28)" (( "(") (binary_expression "puVar16 + 0x28" (identifier "puVar16") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "iVar10 = *(int *)(puVar16 + 0x40);" (assignment_expression "iVar10 = *(int *)(puVar16 + 0x40)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(puVar16 + 0x40)" (* "*") (cast_expression "(int *)(puVar16 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x40)" (( "(") (binary_expression "puVar16 + 0x40" (identifier "puVar16") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (expression_statement "*(uint *)(puVar16 + 0x30) = uVar8;" (assignment_expression "*(uint *)(puVar16 + 0x30) = uVar8" (pointer_expression "*(uint *)(puVar16 + 0x30)" (* "*") (cast_expression "(uint *)(puVar16 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x30)" (( "(") (binary_expression "puVar16 + 0x30" (identifier "puVar16") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "iVar11 = (iVar10 + iVar13) - uVar8;" (assignment_expression "iVar11 = (iVar10 + iVar13) - uVar8" (identifier "iVar11") (= "=") (binary_expression "(iVar10 + iVar13) - uVar8" (parenthesized_expression "(iVar10 + iVar13)" (( "(") (binary_expression "iVar10 + iVar13" (identifier "iVar10") (+ "+") (identifier "iVar13")) () ")")) (- "-") (identifier "uVar8"))) (; ";")) (expression_statement "*(int *)(puVar16 + 0x3c) = iVar11;" (assignment_expression "*(int *)(puVar16 + 0x3c) = iVar11" (pointer_expression "*(int *)(puVar16 + 0x3c)" (* "*") (cast_expression "(int *)(puVar16 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x3c)" (( "(") (binary_expression "puVar16 + 0x3c" (identifier "puVar16") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (identifier "iVar11")) (; ";")) (if_statement "if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }" (if "if") (parenthesized_expression "((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0'))" (( "(") (binary_expression "(iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')" (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(param_1 + 0x131) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x131) == '\0'" (pointer_expression "*(char *)(param_1 + 0x131)" (* "*") (cast_expression "(char *)(param_1 + 0x131)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x131)" (( "(") (binary_expression "param_1 + 0x131" (identifier "param_1") (+ "+") (number_literal "0x131")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n              iVar11 = *unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;\n              cVar7 = FUN_00042890();\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }\n              uVar9 = *(undefined4 *)(param_1 + 0xb0);\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);\n              iVar13 = *(int *)(param_1 + 0xac);\n              *(undefined4 *)(puVar16 + 0x2c) = uVar9;\n              *(int *)(puVar16 + 0x28) = iVar13;\n            }" ({ "{") (expression_statement "iVar11 = *unaff_retaddr;" (assignment_expression "iVar11 = *unaff_retaddr" (identifier "iVar11") (= "=") (pointer_expression "*unaff_retaddr" (* "*") (identifier "unaff_retaddr"))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(iVar11 + 0x84)" (* "*") (cast_expression "(undefined4 *)(iVar11 + 0x84)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x84)" (( "(") (binary_expression "iVar11 + 0x84" (identifier "iVar11") (+ "+") (number_literal "0x84")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a7f3" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a7f3")) (; ";")) (expression_statement "cVar7 = FUN_00042890();" (assignment_expression "cVar7 = FUN_00042890()" (identifier "cVar7") (= "=") (call_expression "FUN_00042890()" (identifier "FUN_00042890") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }" (if "if") (parenthesized_expression "(cVar7 == '\0')" (( "(") (binary_expression "cVar7 == '\0'" (identifier "cVar7") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;\n                FUN_00027140();\n              }" ({ "{") (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xb0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xac)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xac)" (( "(") (binary_expression "param_1 + 0xac" (identifier "param_1") (+ "+") (number_literal "0xac")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4)" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x18)" (( "(") (binary_expression "puVar16 + -0x18" (identifier "puVar16") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xa4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xa4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa4)" (( "(") (binary_expression "param_1 + 0xa4" (identifier "param_1") (+ "+") (number_literal "0xa4")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);" (assignment_expression "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0)" (pointer_expression "*(undefined4 *)(puVar16 + -0x1c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x1c)" (( "(") (binary_expression "puVar16 + -0x1c" (identifier "puVar16") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xa0)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xa0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa0)" (( "(") (binary_expression "param_1 + 0xa0" (identifier "param_1") (+ "+") (number_literal "0xa0")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);" (assignment_expression "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98)" (pointer_expression "*(undefined4 *)(puVar16 + -0x20)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x20)" (( "(") (binary_expression "puVar16 + -0x20" (identifier "puVar16") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x98)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x98)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x98)" (( "(") (binary_expression "param_1 + 0x98" (identifier "param_1") (+ "+") (number_literal "0x98")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94)" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x24)" (( "(") (binary_expression "puVar16 + -0x24" (identifier "puVar16") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x94)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x94)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x94)" (( "(") (binary_expression "param_1 + 0x94" (identifier "param_1") (+ "+") (number_literal "0x94")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x28)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x28)" (( "(") (binary_expression "puVar16 + -0x28" (identifier "puVar16") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x3c)" (( "(") (binary_expression "puVar16 + 0x3c" (identifier "puVar16") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;" (assignment_expression "*(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2" (pointer_expression "*(int *)(puVar16 + -0x2c)" (* "*") (cast_expression "(int *)(puVar16 + -0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x2c)" (( "(") (binary_expression "puVar16 + -0x2c" (identifier "puVar16") (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (binary_expression "unaff_EBX + 0x474c2" (identifier "unaff_EBX") (+ "+") (number_literal "0x474c2"))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x30) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x30) = param_1" (pointer_expression "*(int *)(puVar16 + -0x30)" (* "*") (cast_expression "(int *)(puVar16 + -0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x30)" (( "(") (binary_expression "puVar16 + -0x30" (identifier "puVar16") (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;" (assignment_expression "*(undefined4 *)(puVar16 + -0x34) = 0x3a9e0" (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x34)" (( "(") (binary_expression "puVar16 + -0x34" (identifier "puVar16") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (number_literal "0x3a9e0")) (; ";")) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" (identifier "FUN_00027140") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }" (else "else") (compound_statement "{\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);\n                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);\n                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);\n                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);\n                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);\n                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);\n                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);\n                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);\n                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;\n                *(int *)(puVar16 + -0x30) = param_1;\n                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;\n                FUN_00027140();\n                iVar11 = *(int *)(puVar16 + 0x30);\n                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;\n                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));\n              }" ({ "{") (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xb0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xac)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xac)" (( "(") (binary_expression "param_1 + 0xac" (identifier "param_1") (+ "+") (number_literal "0xac")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xa4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xa4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa4)" (( "(") (binary_expression "param_1 + 0xa4" (identifier "param_1") (+ "+") (number_literal "0xa4")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0)" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x18)" (( "(") (binary_expression "puVar16 + -0x18" (identifier "puVar16") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xa0)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xa0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa0)" (( "(") (binary_expression "param_1 + 0xa0" (identifier "param_1") (+ "+") (number_literal "0xa0")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);" (assignment_expression "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98)" (pointer_expression "*(undefined4 *)(puVar16 + -0x1c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x1c)" (( "(") (binary_expression "puVar16 + -0x1c" (identifier "puVar16") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x98)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x98)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x98)" (( "(") (binary_expression "param_1 + 0x98" (identifier "param_1") (+ "+") (number_literal "0x98")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);" (assignment_expression "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94)" (pointer_expression "*(undefined4 *)(puVar16 + -0x20)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x20)" (( "(") (binary_expression "puVar16 + -0x20" (identifier "puVar16") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x94)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x94)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x94)" (( "(") (binary_expression "param_1 + 0x94" (identifier "param_1") (+ "+") (number_literal "0x94")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x24)" (( "(") (binary_expression "puVar16 + -0x24" (identifier "puVar16") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xf0c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xf0c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf0c)" (( "(") (binary_expression "param_1 + 0xf0c" (identifier "param_1") (+ "+") (number_literal "0xf0c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x28)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x28)" (( "(") (binary_expression "puVar16 + -0x28" (identifier "puVar16") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x3c)" (( "(") (binary_expression "puVar16 + 0x3c" (identifier "puVar16") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "*(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;" (assignment_expression "*(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX" (pointer_expression "*(undefined **)(puVar16 + -0x2c)" (* "*") (cast_expression "(undefined **)(puVar16 + -0x2c)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x2c)" (( "(") (binary_expression "puVar16 + -0x2c" (identifier "puVar16") (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (binary_expression "&UNK_00047456 + unaff_EBX" (pointer_expression "&UNK_00047456" (& "&") (identifier "UNK_00047456")) (+ "+") (identifier "unaff_EBX"))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x30) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x30) = param_1" (pointer_expression "*(int *)(puVar16 + -0x30)" (* "*") (cast_expression "(int *)(puVar16 + -0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x30)" (( "(") (binary_expression "puVar16 + -0x30" (identifier "puVar16") (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x34) = 0x3a840;" (assignment_expression "*(undefined4 *)(puVar16 + -0x34) = 0x3a840" (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x34)" (( "(") (binary_expression "puVar16 + -0x34" (identifier "puVar16") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (number_literal "0x3a840")) (; ";")) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" (identifier "FUN_00027140") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar11 = *(int *)(puVar16 + 0x30);" (assignment_expression "iVar11 = *(int *)(puVar16 + 0x30)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(puVar16 + 0x30)" (* "*") (cast_expression "(int *)(puVar16 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x30)" (( "(") (binary_expression "puVar16 + 0x30" (identifier "puVar16") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "*(undefined1 *)((int)unaff_retaddr + 0x261) = 1;" (assignment_expression "*(undefined1 *)((int)unaff_retaddr + 0x261) = 1" (pointer_expression "*(undefined1 *)((int)unaff_retaddr + 0x261)" (* "*") (cast_expression "(undefined1 *)((int)unaff_retaddr + 0x261)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_retaddr + 0x261)" (( "(") (binary_expression "(int)unaff_retaddr + 0x261" (cast_expression "(int)unaff_retaddr" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_retaddr")) (+ "+") (number_literal "0x261")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));" (assignment_expression "unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13))" (subscript_expression "unaff_retaddr[0xcc]" (identifier "unaff_retaddr") ([ "[") (number_literal "0xcc") (] "]")) (= "=") (binary_expression "unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13))" (subscript_expression "unaff_retaddr[0xcc]" (identifier "unaff_retaddr") ([ "[") (number_literal "0xcc") (] "]")) (+ "+") (parenthesized_expression "(iVar11 - (iVar10 + iVar13))" (( "(") (binary_expression "iVar11 - (iVar10 + iVar13)" (identifier "iVar11") (- "-") (parenthesized_expression "(iVar10 + iVar13)" (( "(") (binary_expression "iVar10 + iVar13" (identifier "iVar10") (+ "+") (identifier "iVar13")) () ")"))) () ")")))) (; ";")) (} "}")))) (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0xb0)" (identifier "uVar9") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xb0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);" (assignment_expression "*(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0)" (pointer_expression "*(undefined4 *)(puVar16 + 0x30)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x30)" (( "(") (binary_expression "puVar16 + 0x30" (identifier "puVar16") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xa0)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xa0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa0)" (( "(") (binary_expression "param_1 + 0xa0" (identifier "param_1") (+ "+") (number_literal "0xa0")) () ")"))))) (; ";")) (expression_statement "iVar13 = *(int *)(param_1 + 0xac);" (assignment_expression "iVar13 = *(int *)(param_1 + 0xac)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(param_1 + 0xac)" (* "*") (cast_expression "(int *)(param_1 + 0xac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xac)" (( "(") (binary_expression "param_1 + 0xac" (identifier "param_1") (+ "+") (number_literal "0xac")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x2c) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + 0x2c) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x2c)" (( "(") (binary_expression "puVar16 + 0x2c" (identifier "puVar16") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "*(int *)(puVar16 + 0x28) = iVar13;" (assignment_expression "*(int *)(puVar16 + 0x28) = iVar13" (pointer_expression "*(int *)(puVar16 + 0x28)" (* "*") (cast_expression "(int *)(puVar16 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x28)" (( "(") (binary_expression "puVar16 + 0x28" (identifier "puVar16") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "iVar13")) (; ";")) (} "}"))) (expression_statement "uVar14 = *(int *)(puVar16 + 0x30) - iVar13;" (assignment_expression "uVar14 = *(int *)(puVar16 + 0x30) - iVar13" (identifier "uVar14") (= "=") (binary_expression "*(int *)(puVar16 + 0x30) - iVar13" (pointer_expression "*(int *)(puVar16 + 0x30)" (* "*") (cast_expression "(int *)(puVar16 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x30)" (( "(") (binary_expression "puVar16 + 0x30" (identifier "puVar16") (+ "+") (number_literal "0x30")) () ")")))) (- "-") (identifier "iVar13"))) (; ";")) (if_statement "if ((int)uVar14 < 0) {\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }\n            else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }" (if "if") (parenthesized_expression "((int)uVar14 < 0)" (( "(") (binary_expression "(int)uVar14 < 0" (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n              *(undefined4 *)(puVar16 + 0x58) = 0;\n              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);\n            }" ({ "{") (expression_statement "*(undefined4 *)(puVar16 + 0x58) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + 0x58) = 0" (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);" (assignment_expression "*(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28)" (pointer_expression "*(undefined4 *)(puVar16 + 0x30)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x30)" (( "(") (binary_expression "puVar16 + 0x30" (identifier "puVar16") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x28)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x28)" (( "(") (binary_expression "puVar16 + 0x28" (identifier "puVar16") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);" (assignment_expression "*(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c)" (pointer_expression "*(undefined4 *)(puVar16 + 0x34)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x34)" (( "(") (binary_expression "puVar16 + 0x34" (identifier "puVar16") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x2c)" (( "(") (binary_expression "puVar16 + 0x2c" (identifier "puVar16") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }" (else "else") (compound_statement "{\n              *(uint *)(puVar16 + 0x58) = uVar14;\n              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);\n              *(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));\n            }" ({ "{") (expression_statement "*(uint *)(puVar16 + 0x58) = uVar14;" (assignment_expression "*(uint *)(puVar16 + 0x58) = uVar14" (pointer_expression "*(uint *)(puVar16 + 0x58)" (* "*") (cast_expression "(uint *)(puVar16 + 0x58)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (identifier "uVar14")) (; ";")) (expression_statement "*(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);" (assignment_expression "*(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28)" (pointer_expression "*(uint *)(puVar16 + 0x30)" (* "*") (cast_expression "(uint *)(puVar16 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x30)" (( "(") (binary_expression "puVar16 + 0x30" (identifier "puVar16") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (binary_expression "uVar14 + *(uint *)(puVar16 + 0x28)" (identifier "uVar14") (+ "+") (pointer_expression "*(uint *)(puVar16 + 0x28)" (* "*") (cast_expression "(uint *)(puVar16 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x28)" (( "(") (binary_expression "puVar16 + 0x28" (identifier "puVar16") (+ "+") (number_literal "0x28")) () ")")))))) (; ";")) (expression_statement "*(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));" (assignment_expression "*(uint *)(puVar16 + 0x34) =\n                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" (pointer_expression "*(uint *)(puVar16 + 0x34)" (* "*") (cast_expression "(uint *)(puVar16 + 0x34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x34)" (( "(") (binary_expression "puVar16 + 0x34" (identifier "puVar16") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (binary_expression "((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +\n                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" (binary_expression "((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c)" (parenthesized_expression "((int)uVar14 >> 0x1f)" (( "(") (binary_expression "(int)uVar14 >> 0x1f" (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14")) (>> ">>") (number_literal "0x1f")) () ")")) (+ "+") (pointer_expression "*(int *)(puVar16 + 0x2c)" (* "*") (cast_expression "(int *)(puVar16 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x2c)" (( "(") (binary_expression "puVar16 + 0x2c" (identifier "puVar16") (+ "+") (number_literal "0x2c")) () ")"))))) (+ "+") (cast_expression "(uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar14,*(uint *)(puVar16 + 0x28))" (identifier "CARRY4") (argument_list "(uVar14,*(uint *)(puVar16 + 0x28))" (( "(") (identifier "uVar14") (, ",") (pointer_expression "*(uint *)(puVar16 + 0x28)" (* "*") (cast_expression "(uint *)(puVar16 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x28)" (( "(") (binary_expression "puVar16 + 0x28" (identifier "puVar16") (+ "+") (number_literal "0x28")) () ")")))) () ")")))))) (; ";")) (} "}")))) (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (= "=") (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffe" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (& "&") (number_literal "0xfffffffe"))) (; ";")) (} "}"))) (expression_statement "uVar9 = *(undefined4 *)(puVar16 + 0x30);" (assignment_expression "uVar9 = *(undefined4 *)(puVar16 + 0x30)" (identifier "uVar9") (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x30)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x30)" (( "(") (binary_expression "puVar16 + 0x30" (identifier "puVar16") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "uVar5 = *(undefined4 *)(puVar16 + 0x34);" (assignment_expression "uVar5 = *(undefined4 *)(puVar16 + 0x34)" (identifier "uVar5") (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x34)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x34)" (( "(") (binary_expression "puVar16 + 0x34" (identifier "puVar16") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0xac) = uVar9;" (assignment_expression "*(undefined4 *)(param_1 + 0xac) = uVar9" (pointer_expression "*(undefined4 *)(param_1 + 0xac)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xac)" (( "(") (binary_expression "param_1 + 0xac" (identifier "param_1") (+ "+") (number_literal "0xac")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0xb0) = uVar5;" (assignment_expression "*(undefined4 *)(param_1 + 0xb0) = uVar5" (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xb0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -8) = uVar5;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = uVar5" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a137;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a137" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a137")) (; ";")) (expression_statement "FUN_0001c950();" (call_expression "FUN_0001c950()" (identifier "FUN_0001c950") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x144) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x144) != '\0'" (pointer_expression "*(char *)(param_1 + 0x144)" (* "*") (cast_expression "(char *)(param_1 + 0x144)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x144)" (( "(") (binary_expression "param_1 + 0x144" (identifier "param_1") (+ "+") (number_literal "0x144")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00039df2;" (goto "goto") (statement_identifier "LAB_00039df2") (; ";"))) (expression_statement "uVar14 = *(uint *)(param_1 + 0xd8);" (assignment_expression "uVar14 = *(uint *)(param_1 + 0xd8)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(param_1 + 0xd8)" (* "*") (cast_expression "(uint *)(param_1 + 0xd8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd8)" (( "(") (binary_expression "param_1 + 0xd8" (identifier "param_1") (+ "+") (number_literal "0xd8")) () ")"))))) (; ";")) (if_statement "if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)\n          goto LAB_0003a318;" (if "if") (parenthesized_expression "((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)" (( "(") (binary_expression "(*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0" (parenthesized_expression "(*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0)" (( "(") (binary_expression "*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0" (binary_expression "*(int *)(puVar16 + 0x58) == 0" (pointer_expression "*(int *)(puVar16 + 0x58)" (* "*") (cast_expression "(int *)(puVar16 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")")))) (== "==") (number_literal "0")) (&& "&&") (binary_expression "uVar14 == 0" (identifier "uVar14") (== "==") (number_literal "0"))) () ")")) (&& "&&") (binary_expression "*(int *)(puVar16 + 0x10) == 0" (pointer_expression "*(int *)(puVar16 + 0x10)" (* "*") (cast_expression "(int *)(puVar16 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0"))) () ")")) (goto_statement "goto LAB_0003a318;" (goto "goto") (statement_identifier "LAB_0003a318") (; ";"))) (expression_statement "cVar7 = *(char *)(param_1 + 0x131);" (assignment_expression "cVar7 = *(char *)(param_1 + 0x131)" (identifier "cVar7") (= "=") (pointer_expression "*(char *)(param_1 + 0x131)" (* "*") (cast_expression "(char *)(param_1 + 0x131)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x131)" (( "(") (binary_expression "param_1 + 0x131" (identifier "param_1") (+ "+") (number_literal "0x131")) () ")"))))) (; ";")) (if_statement "if (uVar14 == 0) {\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }\n          else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }" (if "if") (parenthesized_expression "(uVar14 == 0)" (( "(") (binary_expression "uVar14 == 0" (identifier "uVar14") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }\n            iVar13 = unaff_retaddr[0x9f];\n            if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }\n          }" ({ "{") (labeled_statement "LAB_0003a358:\n            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }" (statement_identifier "LAB_0003a358") (: ":") (if_statement "if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }" (if "if") (parenthesized_expression "((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0))" (( "(") (binary_expression "(*(char *)(*unaff_retaddr + 0x95d) == '\0') &&\n               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)" (parenthesized_expression "(*(char *)(*unaff_retaddr + 0x95d) == '\0')" (( "(") (binary_expression "*(char *)(*unaff_retaddr + 0x95d) == '\0'" (pointer_expression "*(char *)(*unaff_retaddr + 0x95d)" (* "*") (cast_expression "(char *)(*unaff_retaddr + 0x95d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*unaff_retaddr + 0x95d)" (( "(") (binary_expression "*unaff_retaddr + 0x95d" (pointer_expression "*unaff_retaddr" (* "*") (identifier "unaff_retaddr")) (+ "+") (number_literal "0x95d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)" (( "(") (comma_expression "iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0" (assignment_expression "iVar13 = *(int *)(param_1 + 0x118)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(param_1 + 0x118)" (* "*") (cast_expression "(int *)(param_1 + 0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x118)" (( "(") (binary_expression "param_1 + 0x118" (identifier "param_1") (+ "+") (number_literal "0x118")) () ")"))))) (, ",") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n              if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }\n              goto LAB_0003a1c7;\n            }" ({ "{") (if_statement "if (cVar7 == '\0') {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }" (if "if") (parenthesized_expression "(cVar7 == '\0')" (( "(") (binary_expression "cVar7 == '\0'" (identifier "cVar7") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);\n                *(int *)(puVar16 + -0xc) = iVar13;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;\n                iVar13 = FUN_00046a70();\n                goto LAB_0003a392;\n              }" ({ "{") (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xe8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xe8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe8)" (( "(") (binary_expression "param_1 + 0xe8" (identifier "param_1") (+ "+") (number_literal "0xe8")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar16 + -0xc) = iVar13;" (assignment_expression "*(int *)(puVar16 + -0xc) = iVar13" (pointer_expression "*(int *)(puVar16 + -0xc)" (* "*") (cast_expression "(int *)(puVar16 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "iVar13")) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a38f;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a38f" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a38f")) (; ";")) (expression_statement "iVar13 = FUN_00046a70();" (assignment_expression "iVar13 = FUN_00046a70()" (identifier "iVar13") (= "=") (call_expression "FUN_00046a70()" (identifier "FUN_00046a70") (argument_list "()" (( "(") () ")")))) (; ";")) (goto_statement "goto LAB_0003a392;" (goto "goto") (statement_identifier "LAB_0003a392") (; ";")) (} "}"))) (goto_statement "goto LAB_0003a1c7;" (goto "goto") (statement_identifier "LAB_0003a1c7") (; ";")) (} "}")))) (expression_statement "iVar13 = unaff_retaddr[0x9f];" (assignment_expression "iVar13 = unaff_retaddr[0x9f]" (identifier "iVar13") (= "=") (subscript_expression "unaff_retaddr[0x9f]" (identifier "unaff_retaddr") ([ "[") (number_literal "0x9f") (] "]"))) (; ";")) (if_statement "if (cVar7 == '\0') {\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }" (if "if") (parenthesized_expression "(cVar7 == '\0')" (( "(") (binary_expression "cVar7 == '\0'" (identifier "cVar7") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              uVar9 = *(undefined4 *)(param_1 + 0xe8);\n              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }\nLAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;\n              if (iVar13 == 0) goto LAB_00039df2;\n              goto LAB_00039d70;\n            }" ({ "{") (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0xe8);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0xe8)" (identifier "uVar9") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xe8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xe8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe8)" (( "(") (binary_expression "param_1 + 0xe8" (identifier "param_1") (+ "+") (number_literal "0xe8")) () ")"))))) (; ";")) (if_statement "if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }\n              else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }" (if "if") (parenthesized_expression "((*(uint *)(iVar13 + 0x40) & 0xc000) == 0)" (( "(") (binary_expression "(*(uint *)(iVar13 + 0x40) & 0xc000) == 0" (parenthesized_expression "(*(uint *)(iVar13 + 0x40) & 0xc000)" (( "(") (binary_expression "*(uint *)(iVar13 + 0x40) & 0xc000" (pointer_expression "*(uint *)(iVar13 + 0x40)" (* "*") (cast_expression "(uint *)(iVar13 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x40)" (( "(") (binary_expression "iVar13 + 0x40" (identifier "iVar13") (+ "+") (number_literal "0x40")) () ")")))) (& "&") (number_literal "0xc000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -8) = uVar9;\n                *(undefined4 *)(puVar16 + -0xc) = 1;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;\n                iVar13 = FUN_00027580();\n              }" ({ "{") (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -8) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a99a;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a99a" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a99a")) (; ";")) (expression_statement "iVar13 = FUN_00027580();" (assignment_expression "iVar13 = FUN_00027580()" (identifier "iVar13") (= "=") (call_expression "FUN_00027580()" (identifier "FUN_00027580") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }" (else "else") (compound_statement "{\n                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);\n                *(undefined4 *)(puVar16 + -0xc) = uVar9;\n                *(int **)(puVar16 + -0x10) = unaff_retaddr;\n                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;\n                iVar13 = FUN_00055cf0();\n              }" ({ "{") (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x58)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x58)" (( "(") (binary_expression "puVar16 + 0x58" (identifier "puVar16") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a4d0" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a4d0")) (; ";")) (expression_statement "iVar13 = FUN_00055cf0();" (assignment_expression "iVar13 = FUN_00055cf0()" (identifier "iVar13") (= "=") (call_expression "FUN_00055cf0()" (identifier "FUN_00055cf0") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (labeled_statement "LAB_0003a392:\n              *(undefined4 *)(param_1 + 0xd8) = 0;" (statement_identifier "LAB_0003a392") (: ":") (expression_statement "*(undefined4 *)(param_1 + 0xd8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xd8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xd8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xd8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd8)" (( "(") (binary_expression "param_1 + 0xd8" (identifier "param_1") (+ "+") (number_literal "0xd8")) () ")")))) (= "=") (number_literal "0")) (; ";"))) (if_statement "if (iVar13 == 0) goto LAB_00039df2;" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00039df2;" (goto "goto") (statement_identifier "LAB_00039df2") (; ";"))) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }" (else "else") (compound_statement "{\n            if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }\n            if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }\nLAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];\n          }" ({ "{") (if_statement "if (cVar7 == '\0') {\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }" (if "if") (parenthesized_expression "(cVar7 == '\0')" (( "(") (binary_expression "cVar7 == '\0'" (identifier "cVar7") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              uVar14 = *(uint *)(param_1 + 0xa4);\n              uVar2 = *(uint *)(param_1 + 0xa0);\n              uVar8 = *(uint *)(param_1 + 0xe4);\n              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);\n              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }\n              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);\n              *(undefined4 *)(puVar16 + -0xc) = 1;\n              *(int **)(puVar16 + -0x10) = unaff_retaddr;\n              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;\n              iVar13 = FUN_00027580();\n              if (iVar13 != 0) goto LAB_00039d70;\n              uVar14 = *(uint *)(param_1 + 0xd8);\n            }" ({ "{") (expression_statement "uVar14 = *(uint *)(param_1 + 0xa4);" (assignment_expression "uVar14 = *(uint *)(param_1 + 0xa4)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(param_1 + 0xa4)" (* "*") (cast_expression "(uint *)(param_1 + 0xa4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa4)" (( "(") (binary_expression "param_1 + 0xa4" (identifier "param_1") (+ "+") (number_literal "0xa4")) () ")"))))) (; ";")) (expression_statement "uVar2 = *(uint *)(param_1 + 0xa0);" (assignment_expression "uVar2 = *(uint *)(param_1 + 0xa0)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(param_1 + 0xa0)" (* "*") (cast_expression "(uint *)(param_1 + 0xa0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa0)" (( "(") (binary_expression "param_1 + 0xa0" (identifier "param_1") (+ "+") (number_literal "0xa0")) () ")"))))) (; ";")) (expression_statement "uVar8 = *(uint *)(param_1 + 0xe4);" (assignment_expression "uVar8 = *(uint *)(param_1 + 0xe4)" (identifier "uVar8") (= "=") (pointer_expression "*(uint *)(param_1 + 0xe4)" (* "*") (cast_expression "(uint *)(param_1 + 0xe4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe4)" (( "(") (binary_expression "param_1 + 0xe4" (identifier "param_1") (+ "+") (number_literal "0xe4")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);" (assignment_expression "*(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60)" (pointer_expression "*(undefined4 *)(puVar16 + 0x28)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x28)" (( "(") (binary_expression "puVar16 + 0x28" (identifier "puVar16") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xc60)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc60)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc60)" (( "(") (binary_expression "param_1 + 0xc60" (identifier "param_1") (+ "+") (number_literal "0xc60")) () ")"))))) (; ";")) (if_statement "if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {\n                *(uint *)(puVar16 + -4) = uVar8;\n              }\n              else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }" (if "if") (parenthesized_expression "(((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14))" (( "(") (binary_expression "((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)" (parenthesized_expression "((uVar14 & uVar2) == 0xffffffff)" (( "(") (binary_expression "(uVar14 & uVar2) == 0xffffffff" (parenthesized_expression "(uVar14 & uVar2)" (( "(") (binary_expression "uVar14 & uVar2" (identifier "uVar14") (& "&") (identifier "uVar2")) () ")")) (== "==") (number_literal "0xffffffff")) () ")")) (|| "||") (parenthesized_expression "((int)(uint)(uVar2 < uVar8) <= (int)uVar14)" (( "(") (binary_expression "(int)(uint)(uVar2 < uVar8) <= (int)uVar14" (cast_expression "(int)(uint)(uVar2 < uVar8)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)(uVar2 < uVar8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar2 < uVar8)" (( "(") (binary_expression "uVar2 < uVar8" (identifier "uVar2") (< "<") (identifier "uVar8")) () ")")))) (<= "<=") (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14"))) () ")"))) () ")")) (compound_statement "{\n                *(uint *)(puVar16 + -4) = uVar8;\n              }" ({ "{") (expression_statement "*(uint *)(puVar16 + -4) = uVar8;" (assignment_expression "*(uint *)(puVar16 + -4) = uVar8" (pointer_expression "*(uint *)(puVar16 + -4)" (* "*") (cast_expression "(uint *)(puVar16 + -4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (} "}")) (else_clause "else {\n                *(uint *)(puVar16 + -4) = uVar2;\n              }" (else "else") (compound_statement "{\n                *(uint *)(puVar16 + -4) = uVar2;\n              }" ({ "{") (expression_statement "*(uint *)(puVar16 + -4) = uVar2;" (assignment_expression "*(uint *)(puVar16 + -4) = uVar2" (pointer_expression "*(uint *)(puVar16 + -4)" (* "*") (cast_expression "(uint *)(puVar16 + -4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (} "}")))) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x28)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x28)" (( "(") (binary_expression "puVar16 + 0x28" (identifier "puVar16") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 1;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 1" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a1ad" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a1ad")) (; ";")) (expression_statement "iVar13 = FUN_00027580();" (assignment_expression "iVar13 = FUN_00027580()" (identifier "iVar13") (= "=") (call_expression "FUN_00027580()" (identifier "FUN_00027580") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";"))) (expression_statement "uVar14 = *(uint *)(param_1 + 0xd8);" (assignment_expression "uVar14 = *(uint *)(param_1 + 0xd8)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(param_1 + 0xd8)" (* "*") (cast_expression "(uint *)(param_1 + 0xd8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd8)" (( "(") (binary_expression "param_1 + 0xd8" (identifier "param_1") (+ "+") (number_literal "0xd8")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (uVar14 < 2) {\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }" (if "if") (parenthesized_expression "(uVar14 < 2)" (( "(") (binary_expression "uVar14 < 2" (identifier "uVar14") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n              cVar7 = *(char *)(param_1 + 0x131);\n              goto LAB_0003a358;\n            }" ({ "{") (expression_statement "cVar7 = *(char *)(param_1 + 0x131);" (assignment_expression "cVar7 = *(char *)(param_1 + 0x131)" (identifier "cVar7") (= "=") (pointer_expression "*(char *)(param_1 + 0x131)" (* "*") (cast_expression "(char *)(param_1 + 0x131)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x131)" (( "(") (binary_expression "param_1 + 0x131" (identifier "param_1") (+ "+") (number_literal "0x131")) () ")"))))) (; ";")) (goto_statement "goto LAB_0003a358;" (goto "goto") (statement_identifier "LAB_0003a358") (; ";")) (} "}"))) (labeled_statement "LAB_0003a1c7:\n            iVar13 = unaff_retaddr[0x9f];" (statement_identifier "LAB_0003a1c7") (: ":") (expression_statement "iVar13 = unaff_retaddr[0x9f];" (assignment_expression "iVar13 = unaff_retaddr[0x9f]" (identifier "iVar13") (= "=") (subscript_expression "unaff_retaddr[0x9f]" (identifier "unaff_retaddr") ([ "[") (number_literal "0x9f") (] "]"))) (; ";"))) (} "}")))) (expression_statement "*(undefined4 *)(param_1 + 0xd8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xd8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xd8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xd8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd8)" (( "(") (binary_expression "param_1 + 0xd8" (identifier "param_1") (+ "+") (number_literal "0xd8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00039df8;" (goto "goto") (statement_identifier "LAB_00039df8") (; ";")) (} "}")))) (labeled_statement "LAB_0003a318:\n        iVar13 = unaff_retaddr[0x9f];" (statement_identifier "LAB_0003a318") (: ":") (expression_statement "iVar13 = unaff_retaddr[0x9f];" (assignment_expression "iVar13 = unaff_retaddr[0x9f]" (identifier "iVar13") (= "=") (subscript_expression "unaff_retaddr[0x9f]" (identifier "unaff_retaddr") ([ "[") (number_literal "0x9f") (] "]"))) (; ";"))) (expression_statement "iVar10 = *(int *)(iVar13 + 0x34);" (assignment_expression "iVar10 = *(int *)(iVar13 + 0x34)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iVar13 + 0x34)" (* "*") (cast_expression "(int *)(iVar13 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x34)" (( "(") (binary_expression "iVar13 + 0x34" (identifier "iVar13") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (if_statement "if (iVar10 != 0) goto LAB_00039dff;" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00039dff;" (goto "goto") (statement_identifier "LAB_00039dff") (; ";"))) (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")"))))) (; ";")) (} "}")))) (if_statement "if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;" (if "if") (parenthesized_expression "((uVar14 & 0x10) != 0)" (( "(") (binary_expression "(uVar14 & 0x10) != 0" (parenthesized_expression "(uVar14 & 0x10)" (( "(") (binary_expression "uVar14 & 0x10" (identifier "uVar14") (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0003a00e;" (goto "goto") (statement_identifier "LAB_0003a00e") (; ";"))) (if_statement "if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }" (if "if") (parenthesized_expression "((*(byte *)(iVar13 + 0x40) & 0x30) == 0)" (( "(") (binary_expression "(*(byte *)(iVar13 + 0x40) & 0x30) == 0" (parenthesized_expression "(*(byte *)(iVar13 + 0x40) & 0x30)" (( "(") (binary_expression "*(byte *)(iVar13 + 0x40) & 0x30" (pointer_expression "*(byte *)(iVar13 + 0x40)" (* "*") (cast_expression "(byte *)(iVar13 + 0x40)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x40)" (( "(") (binary_expression "iVar13 + 0x40" (identifier "iVar13") (+ "+") (number_literal "0x40")) () ")")))) (& "&") (number_literal "0x30")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        *(undefined4 *)(puVar16 + -0xc) = 0;\n        *(int **)(puVar16 + -0x10) = unaff_retaddr;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;\n        cVar7 = FUN_0007b420();\n        if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;\n      }" ({ "{") (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 0" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39feb;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39feb" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x39feb")) (; ";")) (expression_statement "cVar7 = FUN_0007b420();" (assignment_expression "cVar7 = FUN_0007b420()" (identifier "cVar7") (= "=") (call_expression "FUN_0007b420()" (identifier "FUN_0007b420") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))\n        goto LAB_0003a008;" (if "if") (parenthesized_expression "((cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))" (( "(") (binary_expression "(cVar7 == '\0') &&\n           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14)))" (parenthesized_expression "(cVar7 == '\0')" (( "(") (binary_expression "cVar7 == '\0'" (identifier "cVar7") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14)))" (( "(") (parenthesized_expression "((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))" (( "(") (binary_expression "(*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14)" (binary_expression "(*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0" (parenthesized_expression "(*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3)" (( "(") (binary_expression "*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3" (pointer_expression "*(byte *)(unaff_retaddr[0x9f] + 0x40)" (* "*") (cast_expression "(byte *)(unaff_retaddr[0x9f] + 0x40)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr[0x9f] + 0x40)" (( "(") (binary_expression "unaff_retaddr[0x9f] + 0x40" (subscript_expression "unaff_retaddr[0x9f]" (identifier "unaff_retaddr") ([ "[") (number_literal "0x9f") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (& "&") (number_literal "3")) () ")")) (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "(unaff_retaddr[0x5e] != 0x14)" (( "(") (binary_expression "unaff_retaddr[0x5e] != 0x14" (subscript_expression "unaff_retaddr[0x5e]" (identifier "unaff_retaddr") ([ "[") (number_literal "0x5e") (] "]")) (!= "!=") (number_literal "0x14")) () ")"))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_0003a008;" (goto "goto") (statement_identifier "LAB_0003a008") (; ";"))) (} "}"))) (expression_statement "*(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;" (assignment_expression "*(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1" (pointer_expression "*(int *)(puVar16 + 0x1c)" (* "*") (cast_expression "(int *)(puVar16 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x1c)" (( "(") (binary_expression "puVar16 + 0x1c" (identifier "puVar16") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (binary_expression "*(int *)(puVar16 + 0x1c) + -1" (pointer_expression "*(int *)(puVar16 + 0x1c)" (* "*") (cast_expression "(int *)(puVar16 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x1c)" (( "(") (binary_expression "puVar16 + 0x1c" (identifier "puVar16") (+ "+") (number_literal "0x1c")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);" (assignment_expression "*(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20)" (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x20)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x20)" (( "(") (binary_expression "puVar16 + 0x20" (identifier "puVar16") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(int *)(puVar16 + 0x1c) != -1)" (( "(") (binary_expression "*(int *)(puVar16 + 0x1c) != -1" (pointer_expression "*(int *)(puVar16 + 0x1c)" (* "*") (cast_expression "(int *)(puVar16 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x1c)" (( "(") (binary_expression "puVar16 + 0x1c" (identifier "puVar16") (+ "+") (number_literal "0x1c")) () ")")))) (!= "!=") (number_literal "-1")) () ")")) (; ";")) (expression_statement "uVar14 = *(uint *)(param_1 + 300);" (assignment_expression "uVar14 = *(uint *)(param_1 + 300)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")"))))) (; ";")) (labeled_statement "LAB_00039e5f:\n    puVar17 = *(undefined1 **)(puVar16 + 0x44);" (statement_identifier "LAB_00039e5f") (: ":") (expression_statement "puVar17 = *(undefined1 **)(puVar16 + 0x44);" (assignment_expression "puVar17 = *(undefined1 **)(puVar16 + 0x44)" (identifier "puVar17") (= "=") (pointer_expression "*(undefined1 **)(puVar16 + 0x44)" (* "*") (cast_expression "(undefined1 **)(puVar16 + 0x44)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x44)" (( "(") (binary_expression "puVar16 + 0x44" (identifier "puVar16") (+ "+") (number_literal "0x44")) () ")"))))) (; ";"))) (expression_statement "unaff_retaddr[0x158] = 1;" (assignment_expression "unaff_retaddr[0x158] = 1" (subscript_expression "unaff_retaddr[0x158]" (identifier "unaff_retaddr") ([ "[") (number_literal "0x158") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*puVar17 = 1;" (assignment_expression "*puVar17 = 1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (number_literal "1")) (; ";")) (labeled_statement "joined_r0x0003a020:\n    if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }" (statement_identifier "joined_r0x0003a020") (: ":") (if_statement "if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }\n    else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }" (if "if") (parenthesized_expression "(((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0'))" (( "(") (binary_expression "((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')" (parenthesized_expression "((uVar14 & 3) == 2)" (( "(") (binary_expression "(uVar14 & 3) == 2" (parenthesized_expression "(uVar14 & 3)" (( "(") (binary_expression "uVar14 & 3" (identifier "uVar14") (& "&") (number_literal "3")) () ")")) (== "==") (number_literal "2")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)((int)unaff_retaddr + 0x249) != '\0')" (( "(") (binary_expression "*(char *)((int)unaff_retaddr + 0x249) != '\0'" (pointer_expression "*(char *)((int)unaff_retaddr + 0x249)" (* "*") (cast_expression "(char *)((int)unaff_retaddr + 0x249)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_retaddr + 0x249)" (( "(") (binary_expression "(int)unaff_retaddr + 0x249" (cast_expression "(int)unaff_retaddr" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_retaddr")) (+ "+") (number_literal "0x249")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;\n      FUN_00027140();\n      pcVar6 = *(char **)(puVar16 + 0x38);\n      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;\n      if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }\n    }" ({ "{") (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a" (pointer_expression "*(int *)(puVar16 + -0xc)" (* "*") (cast_expression "(int *)(puVar16 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (binary_expression "unaff_EBX + 0x4752a" (identifier "unaff_EBX") (+ "+") (number_literal "0x4752a"))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a44d;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a44d" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a44d")) (; ";")) (expression_statement "FUN_00027140();" (call_expression "FUN_00027140()" (identifier "FUN_00027140") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar6 = *(char **)(puVar16 + 0x38);" (assignment_expression "pcVar6 = *(char **)(puVar16 + 0x38)" (identifier "pcVar6") (= "=") (pointer_expression "*(char **)(puVar16 + 0x38)" (* "*") (cast_expression "(char **)(puVar16 + 0x38)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x38)" (( "(") (binary_expression "puVar16 + 0x38" (identifier "puVar16") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;" (assignment_expression "*(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (= "=") (binary_expression "*(uint *)(param_1 + 300) & 0xfffffffd" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (& "&") (number_literal "0xfffffffd"))) (; ";")) (if_statement "if (*pcVar6 != '\0') {\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }" (if "if") (parenthesized_expression "(*pcVar6 != '\0')" (( "(") (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_0003a468:\n        iVar13 = 0;\n        goto LAB_00039d70;\n      }" ({ "{") (labeled_statement "LAB_0003a468:\n        iVar13 = 0;" (statement_identifier "LAB_0003a468") (: ":") (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";"))) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }" (else "else") (compound_statement "{\nLAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;\n      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;\n    }" ({ "{") (labeled_statement "LAB_00039e7c:\n      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;" (statement_identifier "LAB_00039e7c") (: ":") (if_statement "if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;" (if "if") (parenthesized_expression "(**(char **)(puVar16 + 0x38) != '\0')" (( "(") (binary_expression "**(char **)(puVar16 + 0x38) != '\0'" (pointer_expression "**(char **)(puVar16 + 0x38)" (* "*") (pointer_expression "*(char **)(puVar16 + 0x38)" (* "*") (cast_expression "(char **)(puVar16 + 0x38)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x38)" (( "(") (binary_expression "puVar16 + 0x38" (identifier "puVar16") (+ "+") (number_literal "0x38")) () ")"))))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0003a468;" (goto "goto") (statement_identifier "LAB_0003a468") (; ";")))) (if_statement "if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;" (if "if") (parenthesized_expression "(((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0))" (( "(") (binary_expression "((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)" (parenthesized_expression "((*(byte *)(param_1 + 300) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 300) & 2) != 0" (parenthesized_expression "(*(byte *)(param_1 + 300) & 2)" (( "(") (binary_expression "*(byte *)(param_1 + 300) & 2" (pointer_expression "*(byte *)(param_1 + 300)" (* "*") (cast_expression "(byte *)(param_1 + 300)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((puVar16[8] & 2) != 0)" (( "(") (binary_expression "(puVar16[8] & 2) != 0" (parenthesized_expression "(puVar16[8] & 2)" (( "(") (binary_expression "puVar16[8] & 2" (subscript_expression "puVar16[8]" (identifier "puVar16") ([ "[") (number_literal "8") (] "]")) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00039b2b;" (goto "goto") (statement_identifier "LAB_00039b2b") (; ";"))) (} "}"))))) (expression_statement "puVar17 = puVar16 + 0x48;" (assignment_expression "puVar17 = puVar16 + 0x48" (identifier "puVar17") (= "=") (binary_expression "puVar16 + 0x48" (identifier "puVar16") (+ "+") (number_literal "0x48"))) (; ";")) (labeled_statement "LAB_00039ea1:\n    *(undefined1 **)(puVar16 + -0x10) = puVar17;" (statement_identifier "LAB_00039ea1") (: ":") (expression_statement "*(undefined1 **)(puVar16 + -0x10) = puVar17;" (assignment_expression "*(undefined1 **)(puVar16 + -0x10) = puVar17" (pointer_expression "*(undefined1 **)(puVar16 + -0x10)" (* "*") (cast_expression "(undefined1 **)(puVar16 + -0x10)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "puVar17")) (; ";"))) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39eaa;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39eaa" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x39eaa")) (; ";")) (expression_statement "FUN_0001ab40();" (call_expression "FUN_0001ab40()" (identifier "FUN_0001ab40") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar9 = *(undefined4 *)(puVar16 + 0x48);" (assignment_expression "uVar9 = *(undefined4 *)(puVar16 + 0x48)" (identifier "uVar9") (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x48)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x48)" (( "(") (binary_expression "puVar16 + 0x48" (identifier "puVar16") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "iVar13 = *(int *)(puVar16 + 0x20);" (assignment_expression "iVar13 = *(int *)(puVar16 + 0x20)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(puVar16 + 0x20)" (* "*") (cast_expression "(int *)(puVar16 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x20)" (( "(") (binary_expression "puVar16 + 0x20" (identifier "puVar16") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "puVar15 = puVar16 + -4;" (assignment_expression "puVar15 = puVar16 + -4" (identifier "puVar15") (= "=") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4"))) (; ";")) (expression_statement "*(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);" (assignment_expression "*(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44)" (pointer_expression "*(undefined4 *)(iVar13 + 0x38)" (* "*") (cast_expression "(undefined4 *)(iVar13 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x38)" (( "(") (binary_expression "iVar13 + 0x38" (identifier "iVar13") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x44)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x44)" (( "(") (binary_expression "puVar16 + 0x44" (identifier "puVar16") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar13 + 0x3c) = uVar9;" (assignment_expression "*(undefined4 *)(iVar13 + 0x3c) = uVar9" (pointer_expression "*(undefined4 *)(iVar13 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(iVar13 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x3c)" (( "(") (binary_expression "iVar13 + 0x3c" (identifier "iVar13") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "puVar4 = (undefined4 *)(puVar16 + -4);" (assignment_expression "puVar4 = (undefined4 *)(puVar16 + -4)" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)(puVar16 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (; ";")) (if_statement "if (*(int *)(puVar16 + 0x1c) == 0) goto LAB_00039c5c;" (if "if") (parenthesized_expression "(*(int *)(puVar16 + 0x1c) == 0)" (( "(") (binary_expression "*(int *)(puVar16 + 0x1c) == 0" (pointer_expression "*(int *)(puVar16 + 0x1c)" (* "*") (cast_expression "(int *)(puVar16 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x1c)" (( "(") (binary_expression "puVar16 + 0x1c" (identifier "puVar16") (+ "+") (number_literal "0x1c")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00039c5c;" (goto "goto") (statement_identifier "LAB_00039c5c") (; ";"))) (labeled_statement "LAB_00039ecb:\n    puVar4 = *(undefined4 **)(param_1 + 0x9c);" (statement_identifier "LAB_00039ecb") (: ":") (expression_statement "puVar4 = *(undefined4 **)(param_1 + 0x9c);" (assignment_expression "puVar4 = *(undefined4 **)(param_1 + 0x9c)" (identifier "puVar4") (= "=") (pointer_expression "*(undefined4 **)(param_1 + 0x9c)" (* "*") (cast_expression "(undefined4 **)(param_1 + 0x9c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x9c)" (( "(") (binary_expression "param_1 + 0x9c" (identifier "param_1") (+ "+") (number_literal "0x9c")) () ")"))))) (; ";"))) (if_statement "if (puVar4 != (undefined4 *)0x0) {\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }" (if "if") (parenthesized_expression "(puVar4 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar4 != (undefined4 *)0x0" (identifier "puVar4") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      uVar9 = *(undefined4 *)(param_1 + 0xb0);\n      *puVar4 = *(undefined4 *)(param_1 + 0xac);\n      puVar4[1] = uVar9;\n    }" ({ "{") (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0xb0)" (identifier "uVar9") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xb0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")"))))) (; ";")) (expression_statement "*puVar4 = *(undefined4 *)(param_1 + 0xac);" (assignment_expression "*puVar4 = *(undefined4 *)(param_1 + 0xac)" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xac)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xac)" (( "(") (binary_expression "param_1 + 0xac" (identifier "param_1") (+ "+") (number_literal "0xac")) () ")"))))) (; ";")) (expression_statement "puVar4[1] = uVar9;" (assignment_expression "puVar4[1] = uVar9" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar9")) (; ";")) (} "}"))) (expression_statement "puVar4 = *(undefined4 **)(param_1 + 0xa8);" (assignment_expression "puVar4 = *(undefined4 **)(param_1 + 0xa8)" (identifier "puVar4") (= "=") (pointer_expression "*(undefined4 **)(param_1 + 0xa8)" (* "*") (cast_expression "(undefined4 **)(param_1 + 0xa8)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xa8)" (( "(") (binary_expression "param_1 + 0xa8" (identifier "param_1") (+ "+") (number_literal "0xa8")) () ")"))))) (; ";")) (if_statement "if (puVar4 == (undefined4 *)0x0) goto LAB_00039c69;" (if "if") (parenthesized_expression "(puVar4 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar4 == (undefined4 *)0x0" (identifier "puVar4") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00039c69;" (goto "goto") (statement_identifier "LAB_00039c69") (; ";"))) (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0xb8);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0xb8)" (identifier "uVar9") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xb8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xb8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb8)" (( "(") (binary_expression "param_1 + 0xb8" (identifier "param_1") (+ "+") (number_literal "0xb8")) () ")"))))) (; ";")) (expression_statement "*puVar4 = *(undefined4 *)(param_1 + 0xb4);" (assignment_expression "*puVar4 = *(undefined4 *)(param_1 + 0xb4)" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xb4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xb4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb4)" (( "(") (binary_expression "param_1 + 0xb4" (identifier "param_1") (+ "+") (number_literal "0xb4")) () ")"))))) (; ";")) (expression_statement "puVar4[1] = uVar9;" (assignment_expression "puVar4[1] = uVar9" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "*(int **)(puVar15 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar15 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar15 + -0x10)" (* "*") (cast_expression "(int **)(puVar15 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar15 + -0x10)" (( "(") (binary_expression "puVar15 + -0x10" (identifier "puVar15") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(undefined4 *)(puVar15 + -0x14) = 0x39f0e;" (assignment_expression "*(undefined4 *)(puVar15 + -0x14) = 0x39f0e" (pointer_expression "*(undefined4 *)(puVar15 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar15 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar15 + -0x14)" (( "(") (binary_expression "puVar15 + -0x14" (identifier "puVar15") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x39f0e")) (; ";")) (expression_statement "iVar13 = FUN_0001cc10();" (assignment_expression "iVar13 = FUN_0001cc10()" (identifier "iVar13") (= "=") (call_expression "FUN_0001cc10()" (identifier "FUN_0001cc10") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar16 = puVar15;" (assignment_expression "puVar16 = puVar15" (identifier "puVar16") (= "=") (identifier "puVar15")) (; ";")) (} "}")))) (if_statement "if (iVar13 == 0) {\n    *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n    *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n    *(int *)(puVar16 + -0x10) = param_1;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39c90;\n    iVar13 = FUN_00033f20();\n    if (iVar13 != 0) goto LAB_00039d70;\n    if (*(int *)(param_1 + 300) == 0) {\n      if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a48c;\n      iVar10 = FUN_0001cc10();\n      if (iVar10 != 0) goto LAB_00039f19;\n    }\n    else {\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }\n    *(bool *)*(undefined4 *)(puVar16 + 0x38) = (*(byte *)(param_1 + 300) & 0x33) == 0;\n  }\n  else {\nLAB_00039f19:\n    iVar13 = 0x2a;\n  }" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n    *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n    *(int *)(puVar16 + -0x10) = param_1;\n    *(undefined4 *)(puVar16 + -0x14) = 0x39c90;\n    iVar13 = FUN_00033f20();\n    if (iVar13 != 0) goto LAB_00039d70;\n    if (*(int *)(param_1 + 300) == 0) {\n      if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a48c;\n      iVar10 = FUN_0001cc10();\n      if (iVar10 != 0) goto LAB_00039f19;\n    }\n    else {\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }\n    *(bool *)*(undefined4 *)(puVar16 + 0x38) = (*(byte *)(param_1 + 300) & 0x33) == 0;\n  }" ({ "{") (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" (* "*") (cast_expression "(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar16 + 0x24) + 0x3c)" (( "(") (binary_expression "*(int *)(puVar16 + 0x24) + 0x3c" (pointer_expression "*(int *)(puVar16 + 0x24)" (* "*") (cast_expression "(int *)(puVar16 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x24)" (( "(") (binary_expression "puVar16 + 0x24" (identifier "puVar16") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" (* "*") (cast_expression "(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar16 + 0x24) + 0x38)" (( "(") (binary_expression "*(int *)(puVar16 + 0x24) + 0x38" (pointer_expression "*(int *)(puVar16 + 0x24)" (* "*") (cast_expression "(int *)(puVar16 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x24)" (( "(") (binary_expression "puVar16 + 0x24" (identifier "puVar16") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39c90;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39c90" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x39c90")) (; ";")) (expression_statement "iVar13 = FUN_00033f20();" (assignment_expression "iVar13 = FUN_00033f20()" (identifier "iVar13") (= "=") (call_expression "FUN_00033f20()" (identifier "FUN_00033f20") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar13 != 0) goto LAB_00039d70;" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";"))) (if_statement "if (*(int *)(param_1 + 300) == 0) {\n      if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a48c;\n      iVar10 = FUN_0001cc10();\n      if (iVar10 != 0) goto LAB_00039f19;\n    }\n    else {\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 300) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 300) == 0" (pointer_expression "*(int *)(param_1 + 300)" (* "*") (cast_expression "(int *)(param_1 + 300)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\nLAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a48c;\n      iVar10 = FUN_0001cc10();\n      if (iVar10 != 0) goto LAB_00039f19;\n    }" ({ "{") (if_statement "if (*(char *)(param_1 + 0x934) == '\0') {\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x934) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x934) == '\0'" (pointer_expression "*(char *)(param_1 + 0x934)" (* "*") (cast_expression "(char *)(param_1 + 0x934)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x934)" (( "(") (binary_expression "param_1 + 0x934" (identifier "param_1") (+ "+") (number_literal "0x934")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        uVar14 = *(uint *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        *(uint *)(puVar16 + 0xc) = uVar14;\n        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }\n        *(int *)(puVar16 + -0xc) = unaff_EBX;\n        iVar13 = 0x12;\n        *(int *)(puVar16 + -0x10) = param_1;\n        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }" ({ "{") (expression_statement "uVar14 = *(uint *)(param_1 + 0x98);" (assignment_expression "uVar14 = *(uint *)(param_1 + 0x98)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(param_1 + 0x98)" (* "*") (cast_expression "(uint *)(param_1 + 0x98)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x98)" (( "(") (binary_expression "param_1 + 0x98" (identifier "param_1") (+ "+") (number_literal "0x98")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);" (assignment_expression "*(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94)" (pointer_expression "*(undefined4 *)(puVar16 + 8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x94)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x94)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x94)" (( "(") (binary_expression "param_1 + 0x94" (identifier "param_1") (+ "+") (number_literal "0x94")) () ")"))))) (; ";")) (expression_statement "*(uint *)(puVar16 + 0xc) = uVar14;" (assignment_expression "*(uint *)(puVar16 + 0xc) = uVar14" (pointer_expression "*(uint *)(puVar16 + 0xc)" (* "*") (cast_expression "(uint *)(puVar16 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xc)" (( "(") (binary_expression "puVar16 + 0xc" (identifier "puVar16") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "uVar14")) (; ";")) (if_statement "if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }\n        else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }" (if "if") (parenthesized_expression "((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff)" (( "(") (binary_expression "(uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff" (parenthesized_expression "(uVar14 & *(uint *)(puVar16 + 8))" (( "(") (binary_expression "uVar14 & *(uint *)(puVar16 + 8)" (identifier "uVar14") (& "&") (pointer_expression "*(uint *)(puVar16 + 8)" (* "*") (cast_expression "(uint *)(puVar16 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")"))))) () ")")) (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\nLAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;\n          unaff_EBX = unaff_EBX + 0x47696;\n        }" ({ "{") (labeled_statement "LAB_0003a470:\n          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;" (statement_identifier "LAB_0003a470") (: ":") (if_statement "if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;" (if "if") (parenthesized_expression "((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4))" (( "(") (binary_expression "(*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)" (parenthesized_expression "(*(char *)(param_1 + 0x144) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x144) == '\0'" (pointer_expression "*(char *)(param_1 + 0x144)" (* "*") (cast_expression "(char *)(param_1 + 0x144)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x144)" (( "(") (binary_expression "param_1 + 0x144" (identifier "param_1") (+ "+") (number_literal "0x144")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(unaff_retaddr[10] == 4)" (( "(") (binary_expression "unaff_retaddr[10] == 4" (subscript_expression "unaff_retaddr[10]" (identifier "unaff_retaddr") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "4")) () ")"))) () ")")) (goto_statement "goto LAB_0003a483;" (goto "goto") (statement_identifier "LAB_0003a483") (; ";")))) (expression_statement "unaff_EBX = unaff_EBX + 0x47696;" (assignment_expression "unaff_EBX = unaff_EBX + 0x47696" (identifier "unaff_EBX") (= "=") (binary_expression "unaff_EBX + 0x47696" (identifier "unaff_EBX") (+ "+") (number_literal "0x47696"))) (; ";")) (} "}")) (else_clause "else {\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }" (else "else") (compound_statement "{\n          iVar10 = *(int *)(param_1 + 0xac);\n          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n          *(int *)(puVar16 + 0x10) = iVar10;\n          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;\n          *(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));\n          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);\n          unaff_EBX = unaff_EBX + 0x47662;\n        }" ({ "{") (expression_statement "iVar10 = *(int *)(param_1 + 0xac);" (assignment_expression "iVar10 = *(int *)(param_1 + 0xac)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(param_1 + 0xac)" (* "*") (cast_expression "(int *)(param_1 + 0xac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xac)" (( "(") (binary_expression "param_1 + 0xac" (identifier "param_1") (+ "+") (number_literal "0xac")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "*(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0)" (pointer_expression "*(undefined4 *)(puVar16 + 0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x14)" (( "(") (binary_expression "puVar16 + 0x14" (identifier "puVar16") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xb0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar16 + 0x10) = iVar10;" (assignment_expression "*(int *)(puVar16 + 0x10) = iVar10" (pointer_expression "*(int *)(puVar16 + 0x10)" (* "*") (cast_expression "(int *)(puVar16 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (if_statement "if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;" (if "if") (parenthesized_expression "(((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0))" (( "(") (binary_expression "((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||\n             (*(int *)(param_1 + 0x138) != 0)" (parenthesized_expression "((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8)))" (( "(") (binary_expression "(*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10) ||\n              (*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))" (parenthesized_expression "(*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10)" (( "(") (binary_expression "*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&\n                *(int *)(puVar16 + 8) == iVar10" (binary_expression "*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc)" (pointer_expression "*(int *)(puVar16 + 0x14)" (* "*") (cast_expression "(int *)(puVar16 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x14)" (( "(") (binary_expression "puVar16 + 0x14" (identifier "puVar16") (+ "+") (number_literal "0x14")) () ")")))) (== "==") (pointer_expression "*(int *)(puVar16 + 0xc)" (* "*") (cast_expression "(int *)(puVar16 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xc)" (( "(") (binary_expression "puVar16 + 0xc" (identifier "puVar16") (+ "+") (number_literal "0xc")) () ")"))))) (&& "&&") (binary_expression "*(int *)(puVar16 + 8) == iVar10" (pointer_expression "*(int *)(puVar16 + 8)" (* "*") (cast_expression "(int *)(puVar16 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (== "==") (identifier "iVar10"))) () ")")) (|| "||") (parenthesized_expression "(*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))" (( "(") (binary_expression "*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&\n               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8)" (binary_expression "*(int *)(puVar16 + 0x14) ==\n               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8))" (pointer_expression "*(int *)(puVar16 + 0x14)" (* "*") (cast_expression "(int *)(puVar16 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x14)" (( "(") (binary_expression "puVar16 + 0x14" (identifier "puVar16") (+ "+") (number_literal "0x14")) () ")")))) (== "==") (binary_expression "*(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +\n               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8))" (binary_expression "*(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac)" (pointer_expression "*(int *)(puVar16 + 0xc)" (* "*") (cast_expression "(int *)(puVar16 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xc)" (( "(") (binary_expression "puVar16 + 0xc" (identifier "puVar16") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (pointer_expression "*(int *)(param_1 + 0xeac)" (* "*") (cast_expression "(int *)(param_1 + 0xeac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xeac)" (( "(") (binary_expression "param_1 + 0xeac" (identifier "param_1") (+ "+") (number_literal "0xeac")) () ")"))))) (+ "+") (cast_expression "(uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8))" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8))" (identifier "CARRY4") (argument_list "(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8))" (( "(") (pointer_expression "*(uint *)(puVar16 + 8)" (* "*") (cast_expression "(uint *)(puVar16 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "*(uint *)(param_1 + 0xea8)" (* "*") (cast_expression "(uint *)(param_1 + 0xea8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xea8)" (( "(") (binary_expression "param_1 + 0xea8" (identifier "param_1") (+ "+") (number_literal "0xea8")) () ")")))) () ")")))))) (&& "&&") (binary_expression "*(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8)" (pointer_expression "*(int *)(puVar16 + 0x10)" (* "*") (cast_expression "(int *)(puVar16 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (binary_expression "*(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8)" (pointer_expression "*(uint *)(puVar16 + 8)" (* "*") (cast_expression "(uint *)(puVar16 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (+ "+") (pointer_expression "*(uint *)(param_1 + 0xea8)" (* "*") (cast_expression "(uint *)(param_1 + 0xea8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xea8)" (( "(") (binary_expression "param_1 + 0xea8" (identifier "param_1") (+ "+") (number_literal "0xea8")) () ")"))))))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(*(int *)(param_1 + 0x138) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x138) != 0" (pointer_expression "*(int *)(param_1 + 0x138)" (* "*") (cast_expression "(int *)(param_1 + 0x138)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x138)" (( "(") (binary_expression "param_1 + 0x138" (identifier "param_1") (+ "+") (number_literal "0x138")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_0003a470;" (goto "goto") (statement_identifier "LAB_0003a470") (; ";"))) (expression_statement "*(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));" (assignment_expression "*(uint *)(puVar16 + -4) =\n               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10))" (pointer_expression "*(uint *)(puVar16 + -4)" (* "*") (cast_expression "(uint *)(puVar16 + -4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (binary_expression "(*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -\n               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10))" (parenthesized_expression "(*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14))" (( "(") (binary_expression "*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)" (pointer_expression "*(int *)(puVar16 + 0xc)" (* "*") (cast_expression "(int *)(puVar16 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xc)" (( "(") (binary_expression "puVar16 + 0xc" (identifier "puVar16") (+ "+") (number_literal "0xc")) () ")")))) (- "-") (pointer_expression "*(int *)(puVar16 + 0x14)" (* "*") (cast_expression "(int *)(puVar16 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x14)" (( "(") (binary_expression "puVar16 + 0x14" (identifier "puVar16") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (- "-") (call_expression "(uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10))" (( "(") (binary_expression "*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10)" (pointer_expression "*(uint *)(puVar16 + 8)" (* "*") (cast_expression "(uint *)(puVar16 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (< "<") (pointer_expression "*(uint *)(puVar16 + 0x10)" (* "*") (cast_expression "(uint *)(puVar16 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")"))))) () ")"))))) (; ";")) (expression_statement "*(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);" (assignment_expression "*(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10)" (pointer_expression "*(uint *)(puVar16 + -8)" (* "*") (cast_expression "(uint *)(puVar16 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "*(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10)" (pointer_expression "*(uint *)(puVar16 + 8)" (* "*") (cast_expression "(uint *)(puVar16 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (- "-") (pointer_expression "*(uint *)(puVar16 + 0x10)" (* "*") (cast_expression "(uint *)(puVar16 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")")))))) (; ";")) (expression_statement "unaff_EBX = unaff_EBX + 0x47662;" (assignment_expression "unaff_EBX = unaff_EBX + 0x47662" (identifier "unaff_EBX") (= "=") (binary_expression "unaff_EBX + 0x47662" (identifier "unaff_EBX") (+ "+") (number_literal "0x47662"))) (; ";")) (} "}")))) (expression_statement "*(int *)(puVar16 + -0xc) = unaff_EBX;" (assignment_expression "*(int *)(puVar16 + -0xc) = unaff_EBX" (pointer_expression "*(int *)(puVar16 + -0xc)" (* "*") (cast_expression "(int *)(puVar16 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "unaff_EBX")) (; ";")) (expression_statement "iVar13 = 0x12;" (assignment_expression "iVar13 = 0x12" (identifier "iVar13") (= "=") (number_literal "0x12")) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x39d6c;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x39d6c" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x39d6c")) (; ";")) (expression_statement "FUN_00027240();" (call_expression "FUN_00027240()" (identifier "FUN_00027240") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";")) (} "}"))) (labeled_statement "LAB_0003a483:\n      *(int **)(puVar16 + -0x10) = unaff_retaddr;" (statement_identifier "LAB_0003a483") (: ":") (expression_statement "*(int **)(puVar16 + -0x10) = unaff_retaddr;" (assignment_expression "*(int **)(puVar16 + -0x10) = unaff_retaddr" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";"))) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a48c;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a48c" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a48c")) (; ";")) (expression_statement "iVar10 = FUN_0001cc10();" (assignment_expression "iVar10 = FUN_0001cc10()" (identifier "iVar10") (= "=") (call_expression "FUN_0001cc10()" (identifier "FUN_0001cc10") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar10 != 0) goto LAB_00039f19;" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00039f19;" (goto "goto") (statement_identifier "LAB_00039f19") (; ";"))) (} "}")) (else_clause "else {\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }" (else "else") (compound_statement "{\n      *(undefined4 *)(puVar16 + -8) = 0;\n      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;\n      *(int *)(puVar16 + -0x10) = param_1;\n      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;\n      iVar10 = FUN_0003f980();\n      if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }\n    }" ({ "{") (expression_statement "*(undefined4 *)(puVar16 + -8) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = 0" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(puVar16 + -0xc) = param_1 + 0xcc;" (assignment_expression "*(int *)(puVar16 + -0xc) = param_1 + 0xcc" (pointer_expression "*(int *)(puVar16 + -0xc)" (* "*") (cast_expression "(int *)(puVar16 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (binary_expression "param_1 + 0xcc" (identifier "param_1") (+ "+") (number_literal "0xcc"))) (; ";")) (expression_statement "*(int *)(puVar16 + -0x10) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x10) = param_1" (pointer_expression "*(int *)(puVar16 + -0x10)" (* "*") (cast_expression "(int *)(puVar16 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3a40a;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3a40a" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3a40a")) (; ";")) (expression_statement "iVar10 = FUN_0003f980();" (assignment_expression "iVar10 = FUN_0003f980()" (identifier "iVar10") (= "=") (call_expression "FUN_0003f980()" (identifier "FUN_0003f980") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar10 < 0) {\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }" (if "if") (parenthesized_expression "(iVar10 < 0)" (( "(") (binary_expression "iVar10 < 0" (identifier "iVar10") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        uVar9 = *(undefined4 *)(param_1 + 0x98);\n        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);\n        uVar5 = *(undefined4 *)(param_1 + 0xac);\n        *(undefined4 *)(puVar16 + 0xc) = uVar9;\n        *(undefined4 *)(puVar16 + 0x10) = uVar5;\n        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);\n        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }\n        *(int *)(puVar16 + -0x1c) = unaff_EBX;\n        iVar13 = 0x1c;\n        *(int *)(puVar16 + -0x20) = param_1;\n        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;\n        FUN_00027240();\n        goto LAB_00039d70;\n      }" ({ "{") (expression_statement "uVar9 = *(undefined4 *)(param_1 + 0x98);" (assignment_expression "uVar9 = *(undefined4 *)(param_1 + 0x98)" (identifier "uVar9") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x98)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x98)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x98)" (( "(") (binary_expression "param_1 + 0x98" (identifier "param_1") (+ "+") (number_literal "0x98")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);" (assignment_expression "*(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94)" (pointer_expression "*(undefined4 *)(puVar16 + 8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x94)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x94)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x94)" (( "(") (binary_expression "param_1 + 0x94" (identifier "param_1") (+ "+") (number_literal "0x94")) () ")"))))) (; ";")) (expression_statement "uVar5 = *(undefined4 *)(param_1 + 0xac);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 0xac)" (identifier "uVar5") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xac)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xac)" (( "(") (binary_expression "param_1 + 0xac" (identifier "param_1") (+ "+") (number_literal "0xac")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0xc) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + 0xc) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + 0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xc)" (( "(") (binary_expression "puVar16 + 0xc" (identifier "puVar16") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x10) = uVar5;" (assignment_expression "*(undefined4 *)(puVar16 + 0x10) = uVar5" (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);" (assignment_expression "*(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0)" (pointer_expression "*(undefined4 *)(puVar16 + 0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x14)" (( "(") (binary_expression "puVar16 + 0x14" (identifier "puVar16") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xb0)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xb0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb0)" (( "(") (binary_expression "param_1 + 0xb0" (identifier "param_1") (+ "+") (number_literal "0xb0")) () ")"))))) (; ";")) (if_statement "if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }\n        else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }" (if "if") (parenthesized_expression "((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff)" (( "(") (binary_expression "(*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff" (parenthesized_expression "(*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc))" (( "(") (binary_expression "*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)" (pointer_expression "*(uint *)(puVar16 + 8)" (* "*") (cast_expression "(uint *)(puVar16 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (& "&") (pointer_expression "*(uint *)(puVar16 + 0xc)" (* "*") (cast_expression "(uint *)(puVar16 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xc)" (( "(") (binary_expression "puVar16 + 0xc" (identifier "puVar16") (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x4761e;\n        }" ({ "{") (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xbb0)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xbb0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xbb0)" (( "(") (binary_expression "param_1 + 0xbb0" (identifier "param_1") (+ "+") (number_literal "0xbb0")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xbac)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xbac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xbac)" (( "(") (binary_expression "param_1 + 0xbac" (identifier "param_1") (+ "+") (number_literal "0xbac")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" (* "*") (cast_expression "(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar16 + 0x24) + 0x3c)" (( "(") (binary_expression "*(int *)(puVar16 + 0x24) + 0x3c" (pointer_expression "*(int *)(puVar16 + 0x24)" (* "*") (cast_expression "(int *)(puVar16 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x24)" (( "(") (binary_expression "puVar16 + 0x24" (identifier "puVar16") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" (* "*") (cast_expression "(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar16 + 0x24) + 0x38)" (( "(") (binary_expression "*(int *)(puVar16 + 0x24) + 0x38" (pointer_expression "*(int *)(puVar16 + 0x24)" (* "*") (cast_expression "(int *)(puVar16 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x24)" (( "(") (binary_expression "puVar16 + 0x24" (identifier "puVar16") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3acc4;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3acc4" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3acc4")) (; ";")) (expression_statement "uVar9 = FUN_0001abe0();" (assignment_expression "uVar9 = FUN_0001abe0()" (identifier "uVar9") (= "=") (call_expression "FUN_0001abe0()" (identifier "FUN_0001abe0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x14)" (( "(") (binary_expression "puVar16 + 0x14" (identifier "puVar16") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x18)" (( "(") (binary_expression "puVar16 + -0x18" (identifier "puVar16") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "unaff_EBX = unaff_EBX + 0x4761e;" (assignment_expression "unaff_EBX = unaff_EBX + 0x4761e" (identifier "unaff_EBX") (= "=") (binary_expression "unaff_EBX + 0x4761e" (identifier "unaff_EBX") (+ "+") (number_literal "0x4761e"))) (; ";")) (} "}")) (else_clause "else {\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }" (else "else") (compound_statement "{\n          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);\n          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;\n          uVar9 = FUN_0001abe0();\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);\n          *(undefined4 *)(puVar16 + -0x18) = uVar9;\n          unaff_EBX = unaff_EBX + 0x475ce;\n        }" ({ "{") (expression_statement "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);" (assignment_expression "*(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0)" (pointer_expression "*(undefined4 *)(puVar16 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xbb0)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xbb0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xbb0)" (( "(") (binary_expression "param_1 + 0xbb0" (identifier "param_1") (+ "+") (number_literal "0xbb0")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xbac)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xbac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xbac)" (( "(") (binary_expression "param_1 + 0xbac" (identifier "param_1") (+ "+") (number_literal "0xbac")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" (* "*") (cast_expression "(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar16 + 0x24) + 0x3c)" (( "(") (binary_expression "*(int *)(puVar16 + 0x24) + 0x3c" (pointer_expression "*(int *)(puVar16 + 0x24)" (* "*") (cast_expression "(int *)(puVar16 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x24)" (( "(") (binary_expression "puVar16 + 0x24" (identifier "puVar16") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" (* "*") (cast_expression "(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar16 + 0x24) + 0x38)" (( "(") (binary_expression "*(int *)(puVar16 + 0x24) + 0x38" (pointer_expression "*(int *)(puVar16 + 0x24)" (* "*") (cast_expression "(int *)(puVar16 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x24)" (( "(") (binary_expression "puVar16 + 0x24" (identifier "puVar16") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x3abd6;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x3abd6" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3abd6")) (; ";")) (expression_statement "uVar9 = FUN_0001abe0();" (assignment_expression "uVar9 = FUN_0001abe0()" (identifier "uVar9") (= "=") (call_expression "FUN_0001abe0()" (identifier "FUN_0001abe0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xc)" (( "(") (binary_expression "puVar16 + 0xc" (identifier "puVar16") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8)" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x14)" (( "(") (binary_expression "puVar16 + 0x14" (identifier "puVar16") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x10)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = uVar9;" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = uVar9" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x18)" (( "(") (binary_expression "puVar16 + -0x18" (identifier "puVar16") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "unaff_EBX = unaff_EBX + 0x475ce;" (assignment_expression "unaff_EBX = unaff_EBX + 0x475ce" (identifier "unaff_EBX") (= "=") (binary_expression "unaff_EBX + 0x475ce" (identifier "unaff_EBX") (+ "+") (number_literal "0x475ce"))) (; ";")) (} "}")))) (expression_statement "*(int *)(puVar16 + -0x1c) = unaff_EBX;" (assignment_expression "*(int *)(puVar16 + -0x1c) = unaff_EBX" (pointer_expression "*(int *)(puVar16 + -0x1c)" (* "*") (cast_expression "(int *)(puVar16 + -0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x1c)" (( "(") (binary_expression "puVar16 + -0x1c" (identifier "puVar16") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "unaff_EBX")) (; ";")) (expression_statement "iVar13 = 0x1c;" (assignment_expression "iVar13 = 0x1c" (identifier "iVar13") (= "=") (number_literal "0x1c")) (; ";")) (expression_statement "*(int *)(puVar16 + -0x20) = param_1;" (assignment_expression "*(int *)(puVar16 + -0x20) = param_1" (pointer_expression "*(int *)(puVar16 + -0x20)" (* "*") (cast_expression "(int *)(puVar16 + -0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x20)" (( "(") (binary_expression "puVar16 + -0x20" (identifier "puVar16") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = 0x3abfc;" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = 0x3abfc" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x24)" (( "(") (binary_expression "puVar16 + -0x24" (identifier "puVar16") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (number_literal "0x3abfc")) (; ";")) (expression_statement "FUN_00027240();" (call_expression "FUN_00027240()" (identifier "FUN_00027240") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_00039d70;" (goto "goto") (statement_identifier "LAB_00039d70") (; ";")) (} "}"))) (} "}")))) (expression_statement "*(bool *)*(undefined4 *)(puVar16 + 0x38) = (*(byte *)(param_1 + 300) & 0x33) == 0;" (assignment_expression "*(bool *)*(undefined4 *)(puVar16 + 0x38) = (*(byte *)(param_1 + 300) & 0x33) == 0" (pointer_expression "*(bool *)*(undefined4 *)(puVar16 + 0x38)" (* "*") (cast_expression "(bool *)*(undefined4 *)(puVar16 + 0x38)" (( "(") (type_descriptor "bool *" (primitive_type "bool") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*(undefined4 *)(puVar16 + 0x38)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x38)" (( "(") (binary_expression "puVar16 + 0x38" (identifier "puVar16") (+ "+") (number_literal "0x38")) () ")")))))) (= "=") (binary_expression "(*(byte *)(param_1 + 300) & 0x33) == 0" (parenthesized_expression "(*(byte *)(param_1 + 300) & 0x33)" (( "(") (binary_expression "*(byte *)(param_1 + 300) & 0x33" (pointer_expression "*(byte *)(param_1 + 300)" (* "*") (cast_expression "(byte *)(param_1 + 300)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (& "&") (number_literal "0x33")) () ")")) (== "==") (number_literal "0"))) (; ";")) (} "}")) (else_clause "else {\nLAB_00039f19:\n    iVar13 = 0x2a;\n  }" (else "else") (compound_statement "{\nLAB_00039f19:\n    iVar13 = 0x2a;\n  }" ({ "{") (labeled_statement "LAB_00039f19:\n    iVar13 = 0x2a;" (statement_identifier "LAB_00039f19") (: ":") (expression_statement "iVar13 = 0x2a;" (assignment_expression "iVar13 = 0x2a" (identifier "iVar13") (= "=") (number_literal "0x2a")) (; ";"))) (} "}")))) (labeled_statement "LAB_00039d70:\n  if (*(int *)(puVar16 + 0x5c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar13;\n  }" (statement_identifier "LAB_00039d70") (: ":") (if_statement "if (*(int *)(puVar16 + 0x5c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar13;\n  }" (if "if") (parenthesized_expression "(*(int *)(puVar16 + 0x5c) == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "*(int *)(puVar16 + 0x5c) == *(int *)(in_GS_OFFSET + 0x14)" (pointer_expression "*(int *)(puVar16 + 0x5c)" (* "*") (cast_expression "(int *)(puVar16 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x5c)" (( "(") (binary_expression "puVar16 + 0x5c" (identifier "puVar16") (+ "+") (number_literal "0x5c")) () ")")))) (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return iVar13;\n  }" ({ "{") (return_statement "return iVar13;" (return "return") (identifier "iVar13") (; ";")) (} "}")))) (expression_statement "*(undefined4 *)(puVar16 + -4) = 0x3ad7f;" (assignment_expression "*(undefined4 *)(puVar16 + -4) = 0x3ad7f" (pointer_expression "*(undefined4 *)(puVar16 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -4)" (( "(") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4")) () ")")))) (= "=") (number_literal "0x3ad7f")) (; ";")) (expression_statement "FUN_0007c1a0();" (call_expression "FUN_0007c1a0()" (identifier "FUN_0007c1a0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

type_1 function_1(type_2 *conn,type_3 *data,type_4 *done,type_4 *comeback)

{
  char **ppcVar1;
  int *piVar2;
  type_5 *pcVar3;
  type_6 *var_30;
  type_7 uVar5;
  type_8 *var_73;
  void *pvVar6;
  type_6 cVar7;
  ssize_t var_22;
  type_4 var_31;
  char var_19;
  type_9 var_40;
  type_1 var_10;
  type_10 *var_45;
  type_9 var_2;
  type_9 var_20;
  type_11 var_59;
  type_12 var_36;
  char *var_17;
  type_13 writefd;
  size_t var_8;
  int var_23;
  type_13 readfd0;
  int var_21;
  type_14 var_72;
  type_15 *pCVar22;
  char *var_51;
  int var_18;
  int var_1;
  bool bVar25;
  type_9 var_39;
  ssize_t *var_3;
  type_9 var_52;
  int var_43;
  type_9 var_6;
  type_9 var_64;
  int var_65;
  type_9 var_67;
  int var_69;
  int var_50;
  type_16 local_34;
  int iStack_30;
  type_4 var_46;
  type_4 var_48;
  ssize_t var_16;
  int var_81;
  type_7 uStack_14;
  
  readfd0 = -1;
  uStack_14 = 0x3986e;
  var_81 = *(int *)(var_1 + 0x14);
  var_3 = (ssize_t *)conn->cselect_bits;
  conn->cselect_bits = 0;
  var_2 = (data->req).keepon;
  if ((var_2 & 0x15) == 1) {
    readfd0 = conn->sockfd;
  }
  writefd = -1;
  if ((var_2 & 0x2a) == 2) {
    writefd = conn->writesockfd;
  }
  if ((conn->data->state).drain == 0) {
    if (var_3 == (ssize_t *)0x0) {
      var_3 = (ssize_t *)var_4(readfd0,-1,writefd,0);
    }
  }
  else {
    var_3 = (ssize_t *)((type_9)var_3 | 1);
  }
  if (var_3 == (ssize_t *)0x4) {
    var_10 = CURLE_SEND_ERROR;
    var_5(data,"select/poll returned error");
    goto LAB_00039d70;
  }
  var_2 = (data->req).keepon;
  var_6 = var_2 & 1;
  if ((var_6 == 0) || ((((type_9)var_3 & 1) == 0 && ((conn->bits).stream_was_rewound == false)))
     ) {
    if (((var_2 & 2) != 0) && (var_6 = 0, ((type_9)var_3 & 2) != 0)) {
LAB_00039b2b:
      if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) &&
         (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&
          (int)(data->req).writebytecount == 0)) {
        var_7(data,TIMER_STARTTRANSFER);
      }
      var_8 = (data->req).upload_present;
      if (var_8 == 0) {
        var_10 = var_9(data);
        if (var_10 != var_11) goto LAB_00039d70;
        (data->req).upload_fromhere = (data->state).ulbuf;
        if ((data->req).upload_done == false) {
          pvVar6 = (data->req).protop;
          if (((data->req).exp100 == var_12) && (*(int *)((int)pvVar6 + 0x1a0) == 2)
             ) {
            piVar2 = &(data->req).keepon;
            *piVar2 = *piVar2 & 0xfffffffd;
            (data->req).exp100 = var_34;
            var_13();
            (data->req).start100.tv_sec = local_34;
            (data->req).start100.tv_usec = iStack_30;
            var_14(data,(data->set).expect_100_timeout,EXPIRE_100_TIMEOUT);
            goto LAB_00039ea1;
          }
          bVar25 = false;
          if ((conn->handler->protocol & 0x40003) != 0) {
            bVar25 = *(int *)((int)pvVar6 + 0x1a0) == 1;
          }
          var_10 = var_15(conn,(data->set).upload_buffer_size,(size_t *)&var_16);
          var_22 = var_16;
          if (var_10 != var_11) goto LAB_00039d70;
          var_52 = var_16;
          if (var_16 == 0) goto LAB_0003a898;
          if (0 < var_16) {
            (data->req).upload_present = var_16;
            if ((!bVar25) && (((data->set).prefer_ascii != false || ((data->set).crlf != false)))) {
              var_17 = (data->state).scratch;
              if (var_17 == (char *)0x0) {
                var_17 = (char *)(*Curl_cmalloc)((data->set).upload_buffer_size * 2);
                (data->state).scratch = var_17;
                if (var_17 == (char *)0x0) {
                  var_10 = CURLE_OUT_OF_MEMORY;
                  var_5(data,"Failed to alloc scratch buffer!",conn,conn);
                  goto LAB_00039d70;
                }
              }
              var_21 = 0;
              var_18 = 0;
              while( true ) {
                var_23 = var_18 + 1;
                var_19 = (data->req).upload_fromhere[var_21];
                if (var_19 == '\n') {
                  var_17[var_18] = '\r';
                  (data->state).scratch[var_18 + 1] = '\n';
                  var_23 = var_18 + 2;
                  if ((data->set).crlf == false) {
                    var_2 = *(type_9 *)((int)&(data->state).infilesize + 4);
                    var_20 = (type_9)(data->state).infilesize;
                    if ((var_2 & var_20) != 0xffffffff) {
                      *(type_9 *)&(data->state).infilesize = var_20 + 1;
                      *(type_9 *)((int)&(data->state).infilesize + 4) = var_2 + (0xfffffffe < var_20)
                      ;
                    }
                  }
                }
                else {
                  var_17[var_18] = var_19;
                }
                var_21 = var_21 + 1;
                if (var_22 == var_21) break;
                var_17 = (data->state).scratch;
                var_18 = var_23;
              }
              if (var_22 != var_23) {
                var_17 = (data->state).scratch;
                (data->req).upload_present = var_23;
                (data->req).upload_fromhere = var_17;
                var_52 = var_23;
              }
            }
            if (((conn->handler->protocol & 0x30000) != 0) &&
               (var_10 = var_24(conn,var_52), var_10 != var_11))
            goto LAB_00039d70;
            var_8 = (data->req).upload_present;
            goto LAB_00039b53;
          }
          var_2 = (data->req).keepon;
        }
        else {
LAB_0003a898:
          var_2 = (data->req).keepon;
          if ((var_2 & 0x20) != 0) goto LAB_00039c0b;
        }
        (data->req).keepon = var_2 & 0xfffffffd;
        var_25(conn);
        if (((conn->bits).rewindaftersend != false) &&
           (var_10 = var_26(conn), var_10 != var_11)) goto LAB_00039d70;
      }
      else {
LAB_00039b53:
        var_3 = &var_16;
        var_10 = var_27(conn,conn->writesockfd,(data->req).upload_fromhere,var_8,var_3);
        if (var_10 != var_11) goto LAB_00039d70;
        if ((data->set).verbose != false) {
          var_28(data,CURLINFO_DATA_OUT,(data->req).upload_fromhere,var_16);
        }
        var_30 = &(data->req).writebytecount;
        var_18 = var_16 + (int)*var_30;
        var_21 = (var_16 >> 0x1f) + *(int *)((int)&(data->req).writebytecount + 4) +
                 (type_9)var_29(var_16,(type_9)*var_30);
        var_31 = (data->req).upload_chunky;
        *(int *)&(data->req).writebytecount = var_18;
        *(int *)((int)&(data->req).writebytecount + 4) = var_21;
        if (((var_31 == false) || ((data->req).forbidchunk != false)) &&
           (var_21 == *(int *)((int)&(data->state).infilesize + 4) &&
            var_18 == (int)(data->state).infilesize)) {
          (data->req).upload_done = true;
          var_32(data,"We are completely uploaded and fine\n");
        }
        var_18 = (data->req).upload_present;
        if (var_18 == var_16) {
          var_10 = var_9(data);
          if (var_10 != var_11) goto LAB_00039d70;
          var_17 = (data->state).ulbuf;
          (data->req).upload_present = 0;
          (data->req).upload_fromhere = var_17;
          if ((data->req).upload_done != false) {
            piVar2 = &(data->req).keepon;
            *piVar2 = *piVar2 & 0xfffffffd;
            var_25(conn);
            if (((conn->bits).rewindaftersend != false) &&
               (var_10 = var_26(conn), var_10 != var_11)) goto LAB_00039d70;
          }
        }
        else {
          ppcVar1 = &(data->req).upload_fromhere;
          *ppcVar1 = *ppcVar1 + var_16;
          (data->req).upload_present = var_18 - var_16;
        }
        var_33(data,(data->req).writebytecount);
      }
LAB_00039c0b:
      var_13();
      (data->req).now.tv_sec = local_34;
      (data->req).now.tv_usec = iStack_30;
      goto LAB_00039ecb;
    }
    var_13();
    (data->req).now.tv_sec = local_34;
    (data->req).now.tv_usec = iStack_30;
LAB_00039c5c:
    if (((data->req).exp100 == var_34) &&
       (var_36 = var_35((data->req).now,(data->req).start100),
       (data->set).expect_100_timeout <= var_36)) {
      piVar2 = &(data->req).keepon;
      *piVar2 = *piVar2 | 2;
      (data->req).exp100 = var_44;
      var_37(data,EXPIRE_100_TIMEOUT);
      var_32(data,"Done waiting for 100-continue\n");
    }
LAB_00039c69:
    var_18 = var_38(conn);
  }
  else {
    var_46 = false;
    var_52 = 0;
    *done = false;
    var_43 = 100;
    *comeback = false;
    var_50 = 0;
    do {
      var_2 = (data->set).buffer_size;
      if (((conn->handler->protocol & 3) == 0) || (conn->httpversion != 0x14)) {
        var_20 = *(type_9 *)((int)&(data->req).size + 4);
        var_39 = (type_9)(data->req).size;
        if (((var_20 & var_39) != 0xffffffff) &&
           (((data->req).header == false &&
            (var_30 = &(data->req).bytecount, var_40 = var_39 - (int)*var_30,
            (int)((var_20 - *(int *)((int)&(data->req).bytecount + 4)) -
                 (type_9)(var_39 < (type_9)*var_30)) < (int)(type_9)(var_40 < var_2))))) {
          var_2 = var_40;
        }
      }
      if (var_2 != 0) {
        var_10 = var_41(conn,conn->sockfd,(data->req).buf,var_2,&var_16);
        if (var_10 != var_42) {
          if (var_10 == var_11) {
            if ((*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0)
               && (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&
                   (int)(data->req).writebytecount == 0)) goto LAB_00039f9b;
            goto LAB_000399eb;
          }
          goto LAB_00039d70;
        }
        var_6 = var_52;
        var_2 = (data->req).keepon;
LAB_0003a00e:
        if (var_43 != 0) goto joined_r0x0003a020;
        goto LAB_00039e5f;
      }
      var_16 = 0;
      if (*(int *)((int)&(data->req).bytecount + 4) == 0 && (int)(data->req).bytecount == 0) {
        if (*(int *)((int)&(data->req).writebytecount + 4) == 0 &&
            (int)(data->req).writebytecount == 0) {
LAB_00039f9b:
          var_7(data,TIMER_STARTTRANSFER);
          if ((data->req).exp100 != var_44) {
            var_13();
            (data->req).start100.tv_sec = local_34;
            (data->req).start100.tv_usec = iStack_30;
          }
        }
LAB_000399eb:
        if (var_16 == 0) goto LAB_00039f28;
        if (var_16 < 1) goto LAB_0003a030;
        var_52 = 0;
        var_18 = var_16;
      }
      else {
LAB_00039f28:
        if ((data->req).bodywrites != 0) {
LAB_0003a030:
          var_2 = (data->req).keepon & 0xfffffffe;
          (data->req).keepon = var_2;
          goto LAB_0003a00e;
        }
        var_18 = 0;
        var_52 = var_6;
      }
      (data->req).buf[var_18] = '\0';
      (data->req).str = (data->req).buf;
      var_45 = conn->handler->readwrite;
      if (var_45 != (type_10 *)0x0) {
        var_10 = (*var_45)(data,conn,&var_16,&var_46);
        if (var_10 == var_11) {
          if (var_46 == false) goto LAB_00039a4c;
LAB_0003a008:
          var_2 = (data->req).keepon;
          goto LAB_0003a00e;
        }
        goto LAB_00039d70;
      }
LAB_00039a4c:
      if ((data->req).header != false) {
        var_48 = false;
        var_10 = var_47(data,conn,&var_16,&var_48);
        if (var_10 != var_11) goto LAB_00039d70;
        var_45 = conn->handler->readwrite;
        if (((var_45 != (type_10 *)0x0)
            && ((int)(type_9)((int)(data->req).maxdownload != 0) <=
                -*(int *)((int)&(data->req).maxdownload + 4))) && (0 < var_16)) {
          var_10 = (*var_45)(data,conn,&var_16,&var_46);
          if (var_10 != var_11) goto LAB_00039d70;
          if (var_46 != false) goto LAB_0003a008;
        }
        if (var_48 == false) {
          if (((data->req).str != (char *)0x0) && ((data->req).header == false)) goto LAB_00039a67;
          goto LAB_00039df2;
        }
        if (0 < var_16) {
          var_31 = var_49(conn->data->multi,1);
          if (var_31) {
            var_32(data,"Rewinding stream by : %zd bytes on url %s (zero-length body)\n",var_16,
                       (data->state).up.path);
            (conn->bits).stream_was_rewound = true;
            conn->read_pos = conn->read_pos - var_16;
          }
          else {
            var_32(data,
                       "Excess found in a non pipelined read: excess = %zd url = %s (zero-length body)\n"
                       ,var_16,(data->state).up.path);
          }
        }
        goto LAB_0003a008;
      }
      if ((data->req).str == (char *)0x0) {
LAB_00039df2:
        pCVar22 = conn->handler;
LAB_00039df8:
        var_45 = pCVar22->readwrite;
        if (var_45 != (type_10 *)0x0) {
LAB_00039dff:
          if ((var_50 != 0) && ((conn->bits).stream_was_rewound == false)) {
            var_17 = (data->req).buf + (data->set).buffer_size;
            var_51 = (data->req).str + var_16;
            (data->req).str = var_51;
            var_16 = (int)var_17 - (int)var_51;
            if (var_51 + var_50 <= var_17) {
              var_16 = var_50;
            }
            var_10 = (*var_45)(data,conn,&var_16,&var_46);
            if (var_10 == var_11) {
              var_2 = (data->req).keepon;
              if (var_46 != false) {
                var_2 = var_2 | 1;
                (data->req).keepon = var_2;
              }
              goto LAB_0003a00e;
            }
            goto LAB_00039d70;
          }
        }
        var_2 = (data->req).keepon;
        if (var_52 != 0) {
          var_2 = var_2 & 0xfffffffe;
          (data->req).keepon = var_2;
        }
      }
      else {
LAB_00039a67:
        if ((0 < var_16) || (var_52 != 0)) {
          if ((data->set).opt_no_body != false) {
            var_10 = CURLE_WEIRD_SERVER_REPLY;
            var_53(conn,2);
            *done = true;
            goto LAB_00039d70;
          }
          var_18 = (data->req).bodywrites;
          if (var_52 == 0 && var_18 == 0) {
            if ((conn->handler->protocol & 0x40003) == 0) {
              var_18 = 0;
            }
            else {
              if ((data->req).newurl != (char *)0x0) {
                if ((conn->bits).close != false) {
                  piVar2 = &(data->req).keepon;
                  *piVar2 = *piVar2 & 0xfffffffe;
                  var_10 = var_11;
                  *done = true;
                  goto LAB_00039d70;
                }
                (data->req).ignorebody = true;
                var_32(data,"Ignoring the response-body\n");
              }
              var_18 = *(int *)((int)&(data->state).resume_from + 4);
              var_21 = (int)(data->state).resume_from;
              if ((((var_18 != 0 || var_21 != 0) && ((data->req).content_range == false)) &&
                  ((data->set).httpreq == var_54)) && ((data->req).ignorebody == false)) {
                if ((var_18 == *(int *)((int)&(data->req).size + 4)) &&
                   (var_21 == (int)(data->req).size)) {
                  var_32(data,"The entire document is already downloaded",var_21,var_21);
                  var_10 = var_11;
                  var_53(conn,1);
                  piVar2 = &(data->req).keepon;
                  *piVar2 = *piVar2 & 0xfffffffe;
                  *done = true;
                }
                else {
                  var_10 = CURLE_RANGE_ERROR;
                  var_5(data,"HTTP server doesn\'t seem to support byte ranges. Cannot resume."
                             ,conn,conn);
                }
                goto LAB_00039d70;
              }
              if ((((data->set).timecondition != var_55) &&
                  ((data->state).range == (char *)0x0)) &&
                 (var_31 = var_56(data,(data->req).timeofdoc), !var_31)) {
                *done = true;
                (data->info).httpcode = 0x130;
                var_32(data,"Simulate a HTTP 304 response!\n",conn,conn);
                var_53(conn,1);
                goto LAB_00039e7c;
              }
              var_18 = (data->req).bodywrites;
            }
          }
          var_31 = (data->set).verbose;
          (data->req).bodywrites = var_18 + 1;
          if (var_31 == false) {
LAB_0003a05d:
            if ((data->req).chunk != false) {
LAB_0003a280:
              var_59 = var_57(conn,(data->req).str,var_16,&var_16);
              if (var_58 < var_59) {
                if (var_59 == var_60) {
                  var_10 = CURLE_WRITE_ERROR;
                  var_5(data,"Failed writing data");
                }
                else {
                  var_10 = CURLE_RECV_ERROR;
                  var_17 = var_61(var_59);
                  var_5(data,"%s in chunked-encoding",var_17);
                }
                goto LAB_00039d70;
              }
              if (var_59 == var_62) {
                var_8 = (conn->chunk).dataleft;
                piVar2 = &(data->req).keepon;
                *piVar2 = *piVar2 & 0xfffffffe;
                if (var_8 != 0) {
                  var_32(conn->data,"Leftovers after chunking: %zu bytes\n",var_8);
                  var_31 = var_49(conn->data->multi,1);
                  if (var_31) {
                    var_32(conn->data,"Rewinding %zu bytes\n",var_8);
                    conn->read_pos = conn->read_pos - var_8;
                    (conn->bits).stream_was_rewound = true;
                  }
                }
              }
            }
            var_64 = (type_9)(data->req).bytecount;
            var_65 = *(int *)((int)&(data->req).bytecount + 4);
            if (((data->req).badheader == var_63) &&
               ((data->req).ignorebody == false)) {
              var_2 = (data->req).hbuflen;
              bVar25 = var_29(var_64,var_2);
              var_64 = var_64 + var_2;
              var_65 = var_65 + (type_9)bVar25;
              *(type_9 *)&(data->req).bytecount = var_64;
              *(int *)((int)&(data->req).bytecount + 4) = var_65;
            }
          }
          else {
            if (((data->req).badheader == var_66) ||
               (var_28(data,CURLINFO_DATA_IN,(data->state).headerbuff,(data->req).hbuflen),
               (data->req).badheader == var_63)) {
              var_28(data,CURLINFO_DATA_IN,(data->req).str,var_16);
              goto LAB_0003a05d;
            }
            if ((data->req).chunk != false) goto LAB_0003a280;
            var_64 = (type_9)(data->req).bytecount;
            var_65 = *(int *)((int)&(data->req).bytecount + 4);
          }
          var_2 = *(type_9 *)((int)&(data->req).maxdownload + 4);
          var_67 = (type_9)(data->req).maxdownload;
          var_20 = var_16 + var_64;
          var_69 = (var_16 >> 0x1f) + var_65 + (type_9)var_29(var_16,var_64);
          if (((var_2 & var_67) != 0xffffffff) &&
             ((var_68(var_69,var_2) != var_68(var_69 - var_2,(type_9)(var_20 < var_67)))
              == (int)((var_69 - var_2) - (type_9)(var_20 < var_67)) < 0)) {
            var_18 = var_16 + var_64;
            var_50 = var_18 - var_67;
            if ((var_50 != 0) && ((data->req).ignorebody == false)) {
              var_31 = var_49(conn->data->multi,1);
              if (var_31) {
                var_32(data,
                           "Rewinding stream by : %zu bytes on url %s (size = %lld, maxdownload = %lld, bytecount = %lld, nread = %zd)\n"
                           ,var_50,(data->state).up.path,(int)(data->req).size,
                           *(type_7 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,
                           *(type_7 *)((int)&(data->req).maxdownload + 4),
                           (int)(data->req).bytecount,
                           *(type_7 *)((int)&(data->req).bytecount + 4),var_16);
                (conn->bits).stream_was_rewound = true;
                conn->read_pos = conn->read_pos + (var_67 - var_18);
              }
              else {
                var_32(data,
                           "Excess found in a non pipelined read: excess = %zu, size = %lld, maxdownload = %lld, bytecount = %lld\n"
                           ,var_50,(int)(data->req).size,
                           *(type_7 *)((int)&(data->req).size + 4),(int)(data->req).maxdownload,
                           *(type_7 *)((int)&(data->req).maxdownload + 4),
                           (int)(data->req).bytecount,
                           *(type_7 *)((int)&(data->req).bytecount + 4));
              }
              var_67 = (type_9)(data->req).maxdownload;
              var_65 = *(int *)((int)&(data->req).bytecount + 4);
              var_64 = (type_9)(data->req).bytecount;
            }
            var_16 = var_67 - var_64;
            if (var_16 < 0) {
              var_16 = 0;
              var_67 = var_64;
              var_69 = var_65;
            }
            else {
              var_67 = var_16 + var_64;
              var_69 = (var_16 >> 0x1f) + var_65 + (type_9)var_29(var_16,var_64);
            }
            piVar2 = &(data->req).keepon;
            *piVar2 = *piVar2 & 0xfffffffe;
            var_20 = var_67;
          }
          var_67 = var_20;
          *(type_9 *)&(data->req).bytecount = var_67;
          *(int *)((int)&(data->req).bytecount + 4) = var_69;
          var_70(data,var_71(var_69,var_67));
          if ((data->req).chunk != false) goto LAB_00039df2;
          var_72 = (data->req).badheader;
          if ((var_16 == 0 && var_72 == var_66) && var_52 == 0) goto LAB_0003a318;
          var_19 = (data->req).ignorebody;
          if (var_72 == var_66) {
LAB_0003a358:
            if (((conn->data->set).http_ce_skip == false) &&
               (var_73 = (data->req).writer_stack, var_73 != (type_8 *)0x0)) {
              if (var_19 == '\0') {
                var_10 = var_74(conn,var_73,(data->req).str,var_16);
                goto LAB_0003a392;
              }
              goto LAB_0003a1c7;
            }
            pCVar22 = conn->handler;
            if (var_19 == '\0') {
              var_17 = (data->req).str;
              if ((pCVar22->protocol & 0xc000) == 0) {
                var_10 = var_75(conn,1,var_17,var_16);
              }
              else {
                var_10 = var_76(conn,var_17,var_16);
              }
LAB_0003a392:
              (data->req).badheader = var_66;
              if (var_10 == var_11) goto LAB_00039df2;
              goto LAB_00039d70;
            }
          }
          else {
            if ((type_4)var_19 == false) {
              var_2 = *(type_9 *)((int)&(data->req).maxdownload + 4);
              var_20 = (type_9)(data->req).maxdownload;
              var_39 = (data->req).hbuflen;
              if (((var_2 & var_20) != 0xffffffff) && ((int)var_2 < (int)(type_9)(var_20 < var_39)))
              {
                var_39 = var_20;
              }
              var_10 = var_75(conn,1,(data->state).headerbuff,var_39);
              if (var_10 != var_11) goto LAB_00039d70;
              var_72 = (data->req).badheader;
            }
            if ((type_9)var_72 < 2) {
              var_19 = (data->req).ignorebody;
              goto LAB_0003a358;
            }
LAB_0003a1c7:
            pCVar22 = conn->handler;
          }
          (data->req).badheader = var_66;
          goto LAB_00039df8;
        }
LAB_0003a318:
        pCVar22 = conn->handler;
        var_45 = pCVar22->readwrite;
        if (var_45 != (type_10 *)0x0)
        goto LAB_00039dff;
        var_2 = (data->req).keepon;
      }
      if ((var_2 & 0x10) != 0) goto LAB_0003a00e;
      if ((((pCVar22->protocol & 0x30) == 0) && (var_31 = var_77(conn,0), !var_31)) &&
         (((conn->handler->protocol & 3) == 0 || (conn->httpversion != 0x14)))) goto LAB_0003a008;
      var_43 = var_43 + -1;
      var_52 = var_6;
    } while (var_43 != -1);
    var_2 = (data->req).keepon;
LAB_00039e5f:
    conn->cselect_bits = 1;
    *comeback = true;
joined_r0x0003a020:
    if (((var_2 & 3) == 2) && ((conn->bits).close != false)) {
      var_32(data,"we are done reading and this is set to close, stop send\n");
      piVar2 = &(data->req).keepon;
      *piVar2 = *piVar2 & 0xfffffffd;
      if (*done != false) {
LAB_0003a468:
        var_10 = var_11;
        goto LAB_00039d70;
      }
    }
    else {
LAB_00039e7c:
      if (*done != false) goto LAB_0003a468;
      if ((((data->req).keepon & 2) != 0) && (((type_9)var_3 & 2) != 0)) goto LAB_00039b2b;
    }
LAB_00039ea1:
    var_13();
    (data->req).now.tv_sec = local_34;
    (data->req).now.tv_usec = iStack_30;
    if (var_6 == 0) goto LAB_00039c5c;
LAB_00039ecb:
    var_30 = (data->req).bytecountp;
    if (var_30 != (type_6 *)0x0) {
      uVar5 = *(type_7 *)((int)&(data->req).bytecount + 4);
      *(int *)var_30 = (int)(data->req).bytecount;
      *(type_7 *)((int)var_30 + 4) = uVar5;
    }
    var_30 = (data->req).writebytecountp;
    if (var_30 == (type_6 *)0x0) goto LAB_00039c69;
    uVar5 = *(type_7 *)((int)&(data->req).writebytecount + 4);
    *(int *)var_30 = (int)(data->req).writebytecount;
    *(type_7 *)((int)var_30 + 4) = uVar5;
    var_18 = var_38(conn);
  }
  if (var_18 == 0) {
    var_18 = (data->req).now.tv_usec;
    var_10 = var_78(data,(data->req).now);
    if (var_10 != var_11) goto LAB_00039d70;
    if ((data->req).keepon == 0) {
      if ((data->set).opt_no_body == false) {
        var_2 = (type_9)(data->req).size;
        var_20 = *(type_9 *)((int)&(data->req).size + 4);
        if ((var_20 & var_2) == 0xffffffff) {
LAB_0003a470:
          if (((data->req).chunk == false) || ((conn->chunk).state == var_79))
          goto LAB_0003a483;
          var_17 = "transfer closed with outstanding read data remaining";
        }
        else {
          var_39 = *(type_9 *)((int)&(data->req).bytecount + 4);
          var_40 = (type_9)(data->req).bytecount;
          if (((var_39 == var_20 && var_2 == var_40) ||
              (var_30 = &(data->state).crlf_conversions,
              var_39 == var_20 + *(int *)((int)&(data->state).crlf_conversions + 4) +
                        (type_9)var_29(var_2,(type_9)*var_30) && var_40 == var_2 + (int)*var_30)) ||
             ((data->req).newurl != (char *)0x0)) goto LAB_0003a470;
          var_18 = var_2 - var_40;
          var_17 = "transfer closed with %lld bytes remaining to read";
        }
        var_10 = CURLE_PARTIAL_FILE;
        var_5(data,var_17,var_18);
        goto LAB_00039d70;
      }
LAB_0003a483:
      var_18 = var_38(conn);
      if (var_18 != 0) goto LAB_00039f19;
    }
    else {
      var_36 = var_80(data,&(data->req).now,false);
      if (var_36 < 0) {
        var_2 = (type_9)(data->req).size;
        var_20 = *(type_9 *)((int)&(data->req).size + 4);
        cVar7 = (data->req).bytecount;
        uVar5 = *(type_7 *)((int)&(data->req).bytecount + 4);
        if ((var_2 & var_20) == 0xffffffff) {
          pcVar3 = &(data->progress).t_startsingle;
          var_20 = pcVar3->tv_sec;
          var_2 = (data->req).now.tv_usec;
          var_36 = var_35((data->req).now,*pcVar3);
          var_17 = "Operation timed out after %d milliseconds with %lld bytes received";
        }
        else {
          var_36 = var_35((data->req).now,(data->progress).t_startsingle);
          var_17 = "Operation timed out after %d milliseconds with %lld out of %lld bytes received"
          ;
        }
        var_10 = CURLE_OPERATION_TIMEDOUT;
        var_5(data,var_17,var_36,(int)cVar7,uVar5,var_2,var_20);
        goto LAB_00039d70;
      }
    }
    *done = ((data->req).keepon & 0x33) == 0;
  }
  else {
LAB_00039f19:
    var_10 = CURLE_ABORTED_BY_CALLBACK;
  }
LAB_00039d70:
  if (var_81 == *(int *)(var_1 + 0x14)) {
    return var_10;
  }
                    /* WARNING: Subroutine does not return */
  var_82();
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (array_declarator declarator: (identifier) size: (number_literal)))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (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: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (identifier)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (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: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (char_literal (escape_sequence))))))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) right: (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (false))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_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: (subscript_expression argument: (identifier) index: (number_literal)))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence))))))))) consequence: (compound_statement (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (identifier))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (number_literal) right: (identifier)))))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (break_statement)) (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: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_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))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))))) (expression_statement (assignment_expression left: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (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: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))))))))) consequence: (compound_statement (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))))) (labeled_statement label: (statement_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)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (unary_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))))))) (goto_statement label: (statement_identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (labeled_statement label: (statement_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)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))) right: (identifier))) consequence: (compound_statement (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) 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))))))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))) (goto_statement label: (statement_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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (goto_statement label: (statement_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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal)))))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) 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)))))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (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))))) (identifier))) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))))) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) 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)))))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) consequence: (goto_statement label: (statement_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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (comma_expression left: (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)))))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (goto_statement label: (statement_identifier))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal))) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_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: (pointer_expression argument: (identifier)) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

/* WARNING: Type propagation algorithm not settling */

int MASKED(int param_1,undefined1 *param_2,undefined1 *param_3)

{
  uint *puVar1;
  uint uVar2;
  code *pcVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  char *pcVar6;
  char cVar7;
  uint uVar8;
  undefined4 uVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  uint uVar14;
  int unaff_EBX;
  undefined1 *puVar15;
  undefined1 *puVar16;
  undefined1 *puVar17;
  int in_GS_OFFSET;
  bool bVar18;
  int *unaff_retaddr;
  int aiStackY_a4 [5];
  undefined4 uStack_84;
  undefined1 auStack_80 [8];
  uint local_78;
  uint local_70 [10];
  undefined1 *local_48;
  undefined4 local_44;
  undefined1 *local_3c [4];
  undefined1 local_2a;
  undefined4 local_28 [5];
  undefined4 uStack_14;
  
  iVar13 = -1;
  uStack_14 = 0x3986e;
  entry();
  local_48 = param_2;
  local_3c[0] = param_3;
  local_28[1] = *(undefined4 *)(in_GS_OFFSET + 0x14);
  local_70[5] = param_1 + 0x94;
  local_78 = unaff_retaddr[0x158];
  unaff_retaddr[0x158] = 0;
  if ((*(uint *)(param_1 + 300) & 0x15) == 1) {
    iVar13 = unaff_retaddr[0xa5];
  }
  iVar10 = -1;
  if ((*(uint *)(param_1 + 300) & 0x2a) == 2) {
    iVar10 = unaff_retaddr[0xa6];
  }
  if (*(int *)(*unaff_retaddr + 0xed4) == 0) {
    if (local_78 == 0) {
      uStack_84 = 0;
      local_78 = FUN_00049010(iVar13,0xffffffff,iVar10);
    }
  }
  else {
    local_78 = local_78 | 1;
  }
  puVar16 = auStack_80;
  if (local_78 == 4) {
    iVar13 = 0x37;
    FUN_00027240(param_1,unaff_EBX + 0x47047);
    goto LAB_00039d70;
  }
  local_70[4] = *(uint *)(param_1 + 300) & 1;
  if ((local_70[4] == 0) ||
     (((local_78 & 1) == 0 && (*(char *)((int)unaff_retaddr + 0x261) == '\0')))) {
    if (((*(uint *)(param_1 + 300) & 2) != 0) &&
       (local_70[4] = 0, puVar16 = auStack_80, (local_78 & 2) != 0)) {
LAB_00039b2b:
      if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&
         (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) {
        *(undefined4 *)(puVar16 + -0xc) = 7;
        *(int *)(puVar16 + -0x10) = param_1;
        *(undefined4 *)(puVar16 + -0x14) = 0x3a3ed;
        FUN_0001c710();
      }
      iVar13 = *(int *)(param_1 + 0x13c);
      if (iVar13 == 0) {
        *(undefined4 *)(puVar16 + 8) = 0;
        *(int *)(puVar16 + -0x10) = param_1;
        *(undefined4 *)(puVar16 + -0x14) = 0x3a5fd;
        iVar13 = FUN_00039100();
        if (iVar13 != 0) goto LAB_00039d70;
        uVar9 = *(undefined4 *)(puVar16 + 8);
        *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);
        if (*(char *)(param_1 + 0x130) == '\0') {
          if ((*(int *)(param_1 + 0x110) == 2) && (*(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 2)
             ) {
            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;
            puVar17 = puVar16 + 0x48;
            *(undefined4 *)(param_1 + 0x110) = 1;
            *(undefined1 **)(puVar16 + -0x10) = puVar17;
            *(undefined4 *)(puVar16 + -0x14) = 0x3ac2f;
            FUN_0001ab40();
            uVar9 = *(undefined4 *)(puVar16 + 0x48);
            iVar13 = *(int *)(puVar16 + 0x20);
            *(undefined4 *)(iVar13 + 0x74) = *(undefined4 *)(puVar16 + 0x44);
            *(undefined4 *)(iVar13 + 0x78) = uVar9;
            *(undefined4 *)(puVar16 + -0x1c) = 0;
            *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0xad8);
            *(int *)(puVar16 + -0x24) = param_1;
            *(undefined4 *)(puVar16 + -0x28) = 0x3ac52;
            FUN_00043260();
            puVar16 = puVar16 + -4;
            goto LAB_00039ea1;
          }
          bVar18 = false;
          if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) != 0) {
            bVar18 = *(int *)(*(int *)(param_1 + 0x148) + 0x1a0) == 1;
          }
          *(undefined4 *)(puVar16 + 0x20) = uVar9;
          puVar16[0x1c] = bVar18;
          *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;
          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;
          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x8fc);
          *(int **)(puVar16 + -0x10) = unaff_retaddr;
          *(undefined4 *)(puVar16 + -0x14) = 0x3a675;
          iVar13 = FUN_00039150();
          if (iVar13 != 0) goto LAB_00039d70;
          iVar13 = *(int *)(puVar16 + 0x58);
          cVar7 = puVar16[0x1c];
          iVar10 = *(int *)(puVar16 + 0x20);
          *(int *)(puVar16 + 0x10) = iVar13;
          if (iVar13 == 0) goto LAB_0003a898;
          if (0 < iVar13) {
            *(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(puVar16 + 0x10);
            if ((cVar7 == '\0') &&
               ((*(char *)(param_1 + 0x927) != '\0' || (*(char *)(param_1 + 0x7ea) != '\0')))) {
              iVar13 = *(int *)(param_1 + 0xcb4);
              if (iVar13 == 0) {
                iVar13 = *(int *)(param_1 + 0x8fc);
                *(int *)(puVar16 + 0x1c) = iVar10;
                *(int *)(puVar16 + -0x10) = iVar13 * 2;
                pcVar3 = *(code **)(unaff_EBX + 0x77802);
                *(undefined4 *)(puVar16 + -0x14) = 0x3ad10;
                iVar13 = (*pcVar3)();
                iVar10 = *(int *)(puVar16 + 0x1c);
                *(int *)(param_1 + 0xcb4) = iVar13;
                if (iVar13 == 0) {
                  *(int **)(puVar16 + -4) = unaff_retaddr;
                  iVar13 = 0x1b;
                  *(int **)(puVar16 + -8) = unaff_retaddr;
                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47566;
                  *(int *)(puVar16 + -0x10) = param_1;
                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad39;
                  FUN_00027240();
                  goto LAB_00039d70;
                }
              }
              iVar11 = 0;
              *(int **)(puVar16 + 0x1c) = unaff_retaddr;
              while( true ) {
                iVar12 = iVar10 + 1;
                cVar7 = *(char *)(*(int *)(param_1 + 0x140) + iVar11);
                if (cVar7 == '\n') {
                  *(char *)(iVar13 + iVar10) = '\r';
                  *(undefined1 *)(*(int *)(param_1 + 0xcb4) + 1 + iVar10) = 10;
                  iVar12 = iVar10 + 2;
                  if (*(char *)(param_1 + 0x7ea) == '\0') {
                    uVar14 = *(uint *)(param_1 + 0xecc);
                    if ((*(uint *)(param_1 + 0xed0) & uVar14) != 0xffffffff) {
                      *(uint *)(param_1 + 0xecc) = uVar14 + 1;
                      *(uint *)(param_1 + 0xed0) =
                           *(uint *)(param_1 + 0xed0) + (uint)(0xfffffffe < uVar14);
                    }
                  }
                }
                else {
                  *(char *)(iVar13 + iVar10) = cVar7;
                }
                iVar11 = iVar11 + 1;
                if (*(int *)(puVar16 + 0x10) == iVar11) break;
                iVar13 = *(int *)(param_1 + 0xcb4);
                iVar10 = iVar12;
              }
              unaff_retaddr = *(int **)(puVar16 + 0x1c);
              if (*(int *)(puVar16 + 0x10) != iVar12) {
                uVar9 = *(undefined4 *)(param_1 + 0xcb4);
                *(int *)(param_1 + 0x13c) = iVar12;
                *(int *)(puVar16 + 0x10) = iVar12;
                *(undefined4 *)(param_1 + 0x140) = uVar9;
              }
            }
            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x30000) != 0) {
              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 0x10);
              *(int **)(puVar16 + -0x10) = unaff_retaddr;
              *(undefined4 *)(puVar16 + -0x14) = 0x3ac67;
              iVar13 = FUN_00057f10();
              if (iVar13 != 0) goto LAB_00039d70;
            }
            iVar13 = *(int *)(param_1 + 0x13c);
            goto LAB_00039b53;
          }
          uVar14 = *(uint *)(param_1 + 300);
        }
        else {
LAB_0003a898:
          uVar14 = *(uint *)(param_1 + 300);
          if ((uVar14 & 0x20) != 0) goto LAB_00039c0b;
        }
        *(uint *)(param_1 + 300) = uVar14 & 0xfffffffd;
        *(int **)(puVar16 + -0x10) = unaff_retaddr;
        *(undefined4 *)(puVar16 + -0x14) = 0x3a8b8;
        FUN_000647d0();
        if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {
          *(int **)(puVar16 + -0x10) = unaff_retaddr;
          *(undefined4 *)(puVar16 + -0x14) = 0x3a8d1;
          iVar13 = FUN_00039660();
          if (iVar13 != 0) goto LAB_00039d70;
        }
      }
      else {
        *(undefined1 **)(puVar16 + 8) = puVar16 + 0x58;
LAB_00039b53:
        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 8);
        *(int *)(puVar16 + -0x14) = iVar13;
        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x140);
        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa6];
        *(int **)(puVar16 + -0x20) = unaff_retaddr;
        *(undefined4 *)(puVar16 + -0x24) = 0x39b6d;
        iVar13 = FUN_00026df0();
        if (iVar13 != 0) goto LAB_00039d70;
        uVar14 = *(uint *)(puVar16 + 0x58);
        if (*(char *)(param_1 + 0x93c) != '\0') {
          *(uint *)(puVar16 + -4) = uVar14;
          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0x140);
          *(undefined4 *)(puVar16 + -0xc) = 4;
          *(int *)(puVar16 + -0x10) = param_1;
          *(undefined4 *)(puVar16 + -0x14) = 0x3a8f7;
          FUN_00027090();
          uVar14 = *(uint *)(puVar16 + 0x58);
        }
        iVar13 = uVar14 + *(uint *)(param_1 + 0xb4);
        iVar10 = ((int)uVar14 >> 0x1f) + *(int *)(param_1 + 0xb8) +
                 (uint)CARRY4(uVar14,*(uint *)(param_1 + 0xb4));
        cVar7 = *(char *)(param_1 + 0x145);
        *(int *)(puVar16 + 8) = iVar13;
        *(int *)(puVar16 + 0xc) = iVar10;
        *(int *)(param_1 + 0xb4) = iVar13;
        *(int *)(param_1 + 0xb8) = iVar10;
        if (((cVar7 == '\0') || (*(char *)(param_1 + 0x147) != '\0')) &&
           (*(int *)(puVar16 + 0xc) == *(int *)(param_1 + 0xed0) &&
            *(int *)(puVar16 + 8) == *(int *)(param_1 + 0xecc))) {
          *(undefined1 *)(param_1 + 0x130) = 1;
          *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47586;
          *(int *)(puVar16 + -0x10) = param_1;
          *(undefined4 *)(puVar16 + -0x14) = 0x3a937;
          FUN_00027140();
          uVar14 = *(uint *)(puVar16 + 0x58);
        }
        if (*(uint *)(param_1 + 0x13c) == uVar14) {
          *(int *)(puVar16 + -0x10) = param_1;
          *(undefined4 *)(puVar16 + -0x14) = 0x3aae9;
          iVar13 = FUN_00039100();
          if (iVar13 != 0) goto LAB_00039d70;
          *(undefined4 *)(param_1 + 0x13c) = 0;
          *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xc6c);
          if (*(char *)(param_1 + 0x130) != '\0') {
            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;
            *(int **)(puVar16 + -0x10) = unaff_retaddr;
            *(undefined4 *)(puVar16 + -0x14) = 0x3ab29;
            FUN_000647d0();
            if (*(char *)((int)unaff_retaddr + 0x25b) != '\0') {
              *(int **)(puVar16 + -0x10) = unaff_retaddr;
              *(undefined4 *)(puVar16 + -0x14) = 0x3ab42;
              iVar13 = FUN_00039660();
              if (iVar13 != 0) goto LAB_00039d70;
            }
          }
        }
        else {
          *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + uVar14;
          *(uint *)(param_1 + 0x13c) = *(uint *)(param_1 + 0x13c) - uVar14;
        }
        *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xb8);
        *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb4);
        *(int *)(puVar16 + -0x10) = param_1;
        *(undefined4 *)(puVar16 + -0x14) = 0x39c08;
        FUN_0001cb10();
      }
LAB_00039c0b:
      *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;
      *(undefined4 *)(puVar16 + -0x14) = 0x39c18;
      FUN_0001ab40();
      uVar9 = *(undefined4 *)(puVar16 + 0x48);
      iVar13 = *(int *)(puVar16 + 0x20);
      puVar15 = puVar16 + -4;
      *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);
      *(undefined4 *)(iVar13 + 0x3c) = uVar9;
      goto LAB_00039ecb;
    }
    FUN_0001ab40(local_3c + 1);
    *(undefined1 **)(param_1 + 0xcc) = local_3c[0];
    *(undefined1 **)(param_1 + 0xd0) = local_3c[1];
    puVar4 = &uStack_84;
LAB_00039c5c:
    puVar15 = (undefined1 *)puVar4;
    if (*(int *)(param_1 + 0x110) == 1) {
      iVar13 = *(int *)(puVar15 + 0x24);
      *(undefined4 *)(puVar15 + -4) = *(undefined4 *)(iVar13 + 0x78);
      *(undefined4 *)(puVar15 + -8) = *(undefined4 *)(iVar13 + 0x74);
      *(undefined4 *)(puVar15 + -0xc) = *(undefined4 *)(iVar13 + 0x3c);
      *(undefined4 *)(puVar15 + -0x10) = *(undefined4 *)(iVar13 + 0x38);
      *(undefined4 *)(puVar15 + -0x14) = 0x3a775;
      iVar13 = FUN_0001abe0();
      if (*(int *)(param_1 + 0xad8) <= iVar13) {
        *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) | 2;
        *(undefined4 *)(param_1 + 0x110) = 0;
        *(undefined4 *)(puVar15 + -0xc) = 0;
        *(int *)(puVar15 + -0x10) = param_1;
        *(undefined4 *)(puVar15 + -0x14) = 0x3a7a0;
        FUN_00043c20();
        *(int *)(puVar15 + -0xc) = unaff_EBX + 0x475ae;
        *(int *)(puVar15 + -0x10) = param_1;
        *(undefined4 *)(puVar15 + -0x14) = 0x3a7af;
        FUN_00027140();
      }
    }
LAB_00039c69:
    *(int **)(puVar15 + -0x10) = unaff_retaddr;
    *(undefined4 *)(puVar15 + -0x14) = 0x39c72;
    iVar13 = FUN_0001cc10();
    puVar16 = puVar15;
  }
  else {
    local_2a = 0;
    local_70[0] = 0;
    *local_48 = 0;
    local_70[3] = 100;
    *local_3c[0] = 0;
    local_44 = 0;
    puVar16 = auStack_80;
    do {
      uVar14 = *(uint *)(param_1 + 0x8f8);
      if (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0) || (unaff_retaddr[0x5e] != 0x14)) {
        uVar2 = *(uint *)(param_1 + 0x94);
        if (((*(uint *)(param_1 + 0x98) & uVar2) != 0xffffffff) &&
           ((*(char *)(param_1 + 0xd4) == '\0' &&
            (uVar8 = uVar2 - *(uint *)(param_1 + 0xac),
            (int)((*(uint *)(param_1 + 0x98) - *(int *)(param_1 + 0xb0)) -
                 (uint)(uVar2 < *(uint *)(param_1 + 0xac))) < (int)(uint)(uVar8 < uVar14))))) {
          uVar14 = uVar8;
        }
      }
      if (uVar14 != 0) {
        *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x58;
        *(uint *)(puVar16 + -0x14) = uVar14;
        *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0x124);
        *(int *)(puVar16 + -0x1c) = unaff_retaddr[0xa5];
        *(int **)(puVar16 + -0x20) = unaff_retaddr;
        *(undefined4 *)(puVar16 + -0x24) = 0x39f63;
        iVar13 = FUN_00026f00();
        if (iVar13 != 0x51) {
          if (iVar13 == 0) {
            if ((*(int *)(param_1 + 0xb0) == 0 && *(int *)(param_1 + 0xac) == 0) &&
               (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0)) goto LAB_00039f9b;
            goto LAB_000399eb;
          }
          goto LAB_00039d70;
        }
        uVar14 = *(uint *)(param_1 + 300);
        *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 0x10);
LAB_0003a00e:
        if (*(int *)(puVar16 + 0x1c) != 0) goto joined_r0x0003a020;
        goto LAB_00039e5f;
      }
      iVar13 = *(int *)(param_1 + 0xb0);
      iVar10 = *(int *)(param_1 + 0xac);
      *(undefined4 *)(puVar16 + 0x58) = 0;
      if (iVar13 == 0 && iVar10 == 0) {
        if (*(int *)(param_1 + 0xb8) == 0 && *(int *)(param_1 + 0xb4) == 0) {
LAB_00039f9b:
          *(undefined4 *)(puVar16 + -0xc) = 7;
          *(int *)(puVar16 + -0x10) = param_1;
          *(undefined4 *)(puVar16 + -0x14) = 0x39fa6;
          FUN_0001c710();
          if (*(int *)(param_1 + 0x110) != 0) {
            *(undefined1 **)(puVar16 + -0x10) = puVar16 + 0x48;
            *(undefined4 *)(puVar16 + -0x14) = 0x39fc4;
            FUN_0001ab40();
            puVar4 = (undefined4 *)(puVar16 + 0x44);
            uVar9 = *(undefined4 *)(puVar16 + 0x48);
            iVar13 = *(int *)(puVar16 + 0x20);
            puVar16 = puVar16 + -4;
            *(undefined4 *)(iVar13 + 0x74) = *puVar4;
            *(undefined4 *)(iVar13 + 0x78) = uVar9;
          }
        }
LAB_000399eb:
        iVar13 = *(int *)(puVar16 + 0x58);
        if (iVar13 == 0) goto LAB_00039f28;
        if (iVar13 < 1) goto LAB_0003a030;
        *(undefined4 *)(puVar16 + 0x10) = 0;
      }
      else {
LAB_00039f28:
        if (*(int *)(param_1 + 0x120) != 0) {
LAB_0003a030:
          uVar14 = *(uint *)(param_1 + 300) & 0xfffffffe;
          *(uint *)(param_1 + 300) = uVar14;
          goto LAB_0003a00e;
        }
        *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);
        iVar13 = 0;
      }
      *(undefined1 *)(*(int *)(param_1 + 0x124) + iVar13) = 0;
      *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0x124);
      pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);
      if (pcVar3 != (code *)0x0) {
        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;
        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;
        *(int **)(puVar16 + -0xc) = unaff_retaddr;
        *(int *)(puVar16 + -0x10) = param_1;
        *(undefined4 *)(puVar16 + -0x14) = 0x39a36;
        iVar13 = (*pcVar3)();
        if (iVar13 == 0) {
          if (puVar16[0x56] == '\0') goto LAB_00039a4c;
LAB_0003a008:
          uVar14 = *(uint *)(param_1 + 300);
          goto LAB_0003a00e;
        }
        goto LAB_00039d70;
      }
LAB_00039a4c:
      if (*(char *)(param_1 + 0xd4) != '\0') {
        puVar16[0x57] = 0;
        *(undefined1 **)(puVar16 + -4) = puVar16 + 0x57;
        *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;
        *(int **)(puVar16 + -0xc) = unaff_retaddr;
        *(int *)(puVar16 + -0x10) = param_1;
        *(undefined4 *)(puVar16 + -0x14) = 0x39da6;
        iVar13 = FUN_00025650();
        if (iVar13 != 0) goto LAB_00039d70;
        pcVar3 = *(code **)(unaff_retaddr[0x9f] + 0x34);
        if (((pcVar3 != (code *)0x0) &&
            ((int)(uint)(*(int *)(param_1 + 0xa0) != 0) <= -*(int *)(param_1 + 0xa4))) &&
           (0 < *(int *)(puVar16 + 0x58))) {
          *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;
          *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;
          *(int **)(puVar16 + -0xc) = unaff_retaddr;
          *(int *)(puVar16 + -0x10) = param_1;
          *(undefined4 *)(puVar16 + -0x14) = 0x3a21e;
          iVar13 = (*pcVar3)();
          if (iVar13 != 0) goto LAB_00039d70;
          if (puVar16[0x56] != '\0') goto LAB_0003a008;
        }
        if (puVar16[0x57] == '\0') {
          if ((*(int *)(param_1 + 0xe8) != 0) && (*(char *)(param_1 + 0xd4) == '\0'))
          goto LAB_00039a67;
          goto LAB_00039df2;
        }
        if (0 < *(int *)(puVar16 + 0x58)) {
          iVar13 = *unaff_retaddr;
          *(undefined4 *)(puVar16 + -0xc) = 1;
          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar13 + 0x84);
          *(undefined4 *)(puVar16 + -0x14) = 0x3aaa1;
          cVar7 = FUN_00042890();
          if (cVar7 == '\0') {
            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);
            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);
            *(undefined **)(puVar16 + -0xc) = &UNK_00047352 + unaff_EBX;
            *(int *)(puVar16 + -0x10) = param_1;
            *(undefined4 *)(puVar16 + -0x14) = 0x3acf0;
            FUN_00027140();
          }
          else {
            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xf0c);
            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);
            *(undefined **)(puVar16 + -0xc) = &UNK_00047312 + unaff_EBX;
            *(int *)(puVar16 + -0x10) = param_1;
            *(undefined4 *)(puVar16 + -0x14) = 0x3aac3;
            FUN_00027140();
            iVar13 = *(int *)(puVar16 + 0x58);
            *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;
            unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;
          }
        }
        goto LAB_0003a008;
      }
      if (*(int *)(param_1 + 0xe8) == 0) {
LAB_00039df2:
        iVar13 = unaff_retaddr[0x9f];
LAB_00039df8:
        iVar10 = *(int *)(iVar13 + 0x34);
        if (iVar10 != 0) {
LAB_00039dff:
          if ((*(int *)(puVar16 + 0x3c) != 0) && (*(char *)((int)unaff_retaddr + 0x261) == '\0')) {
            iVar13 = *(int *)(param_1 + 0x8f8);
            iVar11 = *(int *)(puVar16 + 0x3c);
            *(int *)(puVar16 + 0x10) = iVar10;
            uVar14 = iVar13 + *(int *)(param_1 + 0x124);
            iVar10 = *(int *)(puVar16 + 0x58) + *(int *)(param_1 + 0xe8);
            *(int *)(param_1 + 0xe8) = iVar10;
            iVar13 = uVar14 - iVar10;
            if ((uint)(iVar11 + iVar10) <= uVar14) {
              iVar13 = *(int *)(puVar16 + 0x3c);
            }
            *(int *)(puVar16 + 0x58) = iVar13;
            *(undefined1 **)(puVar16 + -4) = puVar16 + 0x56;
            *(undefined1 **)(puVar16 + -8) = puVar16 + 0x58;
            *(int **)(puVar16 + -0xc) = unaff_retaddr;
            *(int *)(puVar16 + -0x10) = param_1;
            *(undefined4 *)(puVar16 + -0x14) = 0x3aa4b;
            iVar13 = (**(code **)(puVar16 + 0x10))();
            if (iVar13 == 0) {
              uVar14 = *(uint *)(param_1 + 300);
              if (puVar16[0x56] != '\0') {
                uVar14 = uVar14 | 1;
                *(uint *)(param_1 + 300) = uVar14;
              }
              goto LAB_0003a00e;
            }
            goto LAB_00039d70;
          }
        }
        uVar14 = *(uint *)(param_1 + 300);
        if (*(int *)(puVar16 + 0x10) != 0) {
          uVar14 = uVar14 & 0xfffffffe;
          *(uint *)(param_1 + 300) = uVar14;
        }
      }
      else {
LAB_00039a67:
        if ((0 < *(int *)(puVar16 + 0x58)) || ((puVar16[0x10] & 1) != 0)) {
          if (*(char *)(param_1 + 0x934) != '\0') {
            *(undefined4 *)(puVar16 + -0xc) = 2;
            *(int **)(puVar16 + -0x10) = unaff_retaddr;
            iVar13 = 8;
            *(undefined4 *)(puVar16 + -0x14) = 0x3ab68;
            FUN_000414c0();
            **(undefined1 **)(puVar16 + 0x38) = 1;
            goto LAB_00039d70;
          }
          iVar13 = *(int *)(param_1 + 0x120);
          if (*(int *)(puVar16 + 0x10) == 0 && iVar13 == 0) {
            if ((*(uint *)(unaff_retaddr[0x9f] + 0x40) & 0x40003) == 0) {
              iVar13 = 0;
            }
            else {
              if (*(int *)(param_1 + 0x138) != 0) {
                if (*(char *)((int)unaff_retaddr + 0x249) != '\0') {
                  puVar17 = *(undefined1 **)(puVar16 + 0x38);
                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;
                  iVar13 = 0;
                  *puVar17 = 1;
                  goto LAB_00039d70;
                }
                *(undefined1 *)(param_1 + 0x131) = 1;
                *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47062;
                *(int *)(puVar16 + -0x10) = param_1;
                *(undefined4 *)(puVar16 + -0x14) = 0x3a521;
                FUN_00027140();
              }
              iVar13 = *(int *)(param_1 + 0xeb8);
              if ((((*(int *)(param_1 + 0xebc) != 0 || iVar13 != 0) &&
                   (*(char *)(param_1 + 0xf8) == '\0')) && (*(int *)(param_1 + 0x818) == 1)) &&
                 (*(char *)(param_1 + 0x131) == '\0')) {
                if ((*(int *)(param_1 + 0xebc) == *(int *)(param_1 + 0x98)) &&
                   (iVar13 == *(int *)(param_1 + 0x94))) {
                  *(int *)(puVar16 + -4) = iVar13;
                  *(int *)(puVar16 + -8) = iVar13;
                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x473a2;
                  *(int *)(puVar16 + -0x10) = param_1;
                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad9a;
                  FUN_00027140();
                  *(undefined4 *)(puVar16 + -0xc) = 1;
                  *(int **)(puVar16 + -0x10) = unaff_retaddr;
                  iVar13 = 0;
                  *(undefined4 *)(puVar16 + -0x14) = 0x3ada6;
                  FUN_000414c0();
                  puVar17 = *(undefined1 **)(puVar16 + 0x38);
                  *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;
                  *puVar17 = 1;
                }
                else {
                  *(int **)(puVar16 + -4) = unaff_retaddr;
                  *(int **)(puVar16 + -8) = unaff_retaddr;
                  iVar13 = 0x21;
                  *(undefined **)(puVar16 + -0xc) = &UNK_000473ce + unaff_EBX;
                  *(int *)(puVar16 + -0x10) = param_1;
                  *(undefined4 *)(puVar16 + -0x14) = 0x3a571;
                  FUN_00027240();
                }
                goto LAB_00039d70;
              }
              if ((*(int *)(param_1 + 0x810) != 0) && (*(int *)(param_1 + 0xeb4) == 0)) {
                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0x11c);
                *(int *)(puVar16 + -0x10) = param_1;
                *(undefined4 *)(puVar16 + -0x14) = 0x3a5a3;
                cVar7 = FUN_000397f0();
                if (cVar7 == '\0') {
                  **(undefined1 **)(puVar16 + 0x38) = 1;
                  *(undefined4 *)(param_1 + 0xf48) = 0x130;
                  *(int **)(puVar16 + -4) = unaff_retaddr;
                  *(int **)(puVar16 + -8) = unaff_retaddr;
                  *(undefined **)(puVar16 + -0xc) = &UNK_0004740e + unaff_EBX;
                  *(int *)(puVar16 + -0x10) = param_1;
                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5cc;
                  FUN_00027140();
                  *(undefined4 *)(puVar16 + -0xc) = 1;
                  *(int **)(puVar16 + -0x10) = unaff_retaddr;
                  *(undefined4 *)(puVar16 + -0x14) = 0x3a5d6;
                  FUN_000414c0();
                  goto LAB_00039e7c;
                }
              }
              iVar13 = *(int *)(param_1 + 0x120);
            }
          }
          *(int *)(param_1 + 0x120) = iVar13 + 1;
          if (*(char *)(param_1 + 0x93c) == '\0') {
LAB_0003a05d:
            if (*(char *)(param_1 + 0x144) != '\0') {
LAB_0003a280:
              *(undefined1 **)(puVar16 + -4) = puVar16 + 0x58;
              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);
              *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xe8);
              *(int **)(puVar16 + -0x10) = unaff_retaddr;
              *(undefined4 *)(puVar16 + -0x14) = 0x3a295;
              iVar10 = FUN_0003f2e0();
              if (0 < iVar10) {
                if (iVar10 == 4) {
                  iVar13 = 0x17;
                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4707e;
                  *(int *)(puVar16 + -0x10) = param_1;
                  *(undefined4 *)(puVar16 + -0x14) = 0x3ad5d;
                  FUN_00027240();
                }
                else {
                  iVar13 = 0x38;
                  *(int *)(puVar16 + -0x10) = iVar10;
                  *(undefined4 *)(puVar16 + -0x14) = 0x3ac90;
                  uVar9 = FUN_0003f850();
                  *(undefined4 *)(puVar16 + -8) = uVar9;
                  *(int *)(puVar16 + -0xc) = unaff_EBX + 0x47092;
                  *(int *)(puVar16 + -0x10) = param_1;
                  *(undefined4 *)(puVar16 + -0x14) = 0x3aca1;
                  FUN_00027240();
                }
                goto LAB_00039d70;
              }
              if (iVar10 == -1) {
                iVar13 = unaff_retaddr[0xd];
                *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;
                if (iVar13 != 0) {
                  *(int *)(puVar16 + -8) = iVar13;
                  *(undefined **)(puVar16 + -0xc) = &UNK_0004742e + unaff_EBX;
                  *(int *)(puVar16 + -0x10) = *unaff_retaddr;
                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2ce;
                  FUN_00027140();
                  iVar10 = *unaff_retaddr;
                  *(undefined4 *)(puVar16 + -0xc) = 1;
                  *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar10 + 0x84);
                  *(undefined4 *)(puVar16 + -0x14) = 0x3a2e0;
                  cVar7 = FUN_00042890();
                  if (cVar7 != '\0') {
                    *(int *)(puVar16 + -8) = iVar13;
                    *(int *)(puVar16 + -0xc) = unaff_EBX + 0x470a9;
                    *(int *)(puVar16 + -0x10) = *unaff_retaddr;
                    *(undefined4 *)(puVar16 + -0x14) = 0x3a2fe;
                    FUN_00027140();
                    unaff_retaddr[0xcc] = unaff_retaddr[0xcc] - iVar13;
                    *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;
                  }
                }
              }
            }
            uVar9 = *(undefined4 *)(param_1 + 0xb0);
            iVar13 = *(int *)(param_1 + 0xd8);
            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);
            *(undefined4 *)(puVar16 + 0x2c) = uVar9;
            if ((iVar13 == 1) && (*(char *)(param_1 + 0x131) == '\0')) {
              uVar2 = *(uint *)(param_1 + 0xe4);
              puVar1 = (uint *)(puVar16 + 0x28);
              uVar14 = *puVar1;
              *puVar1 = *puVar1 + uVar2;
              *(uint *)(puVar16 + 0x2c) = *(int *)(puVar16 + 0x2c) + (uint)CARRY4(uVar14,uVar2);
              uVar9 = *(undefined4 *)(puVar16 + 0x2c);
              *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(puVar16 + 0x28);
              *(undefined4 *)(param_1 + 0xb0) = uVar9;
            }
          }
          else {
            if (*(int *)(param_1 + 0xd8) == 0) {
LAB_0003a048:
              *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);
              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);
              *(undefined4 *)(puVar16 + -0xc) = 3;
              *(int *)(puVar16 + -0x10) = param_1;
              *(undefined4 *)(puVar16 + -0x14) = 0x3a05a;
              FUN_00027090();
              goto LAB_0003a05d;
            }
            *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xe4);
            *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xc60);
            *(undefined4 *)(puVar16 + -0xc) = 3;
            *(int *)(puVar16 + -0x10) = param_1;
            *(undefined4 *)(puVar16 + -0x14) = 0x39ad1;
            FUN_00027090();
            if (*(int *)(param_1 + 0xd8) == 1) goto LAB_0003a048;
            if (*(char *)(param_1 + 0x144) != '\0') goto LAB_0003a280;
            uVar9 = *(undefined4 *)(param_1 + 0xb0);
            *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xac);
            *(undefined4 *)(puVar16 + 0x2c) = uVar9;
          }
          uVar14 = *(uint *)(puVar16 + 0x58);
          uVar2 = *(uint *)(param_1 + 0xa4);
          uVar8 = *(uint *)(param_1 + 0xa0);
          *(uint *)(puVar16 + 0x40) = uVar14;
          *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);
          *(uint *)(puVar16 + 0x34) =
               ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +
               (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));
          if (((uVar2 & uVar8) != 0xffffffff) &&
             (iVar13 = *(int *)(puVar16 + 0x34) - uVar2,
             (SBORROW4(*(int *)(puVar16 + 0x34),uVar2) !=
             SBORROW4(iVar13,(uint)(*(uint *)(puVar16 + 0x30) < uVar8))) ==
             (int)(iVar13 - (uint)(*(uint *)(puVar16 + 0x30) < uVar8)) < 0)) {
            iVar13 = *(int *)(puVar16 + 0x28);
            iVar10 = *(int *)(puVar16 + 0x40);
            *(uint *)(puVar16 + 0x30) = uVar8;
            iVar11 = (iVar10 + iVar13) - uVar8;
            *(int *)(puVar16 + 0x3c) = iVar11;
            if ((iVar11 != 0) && (*(char *)(param_1 + 0x131) == '\0')) {
              iVar11 = *unaff_retaddr;
              *(undefined4 *)(puVar16 + -0xc) = 1;
              *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(iVar11 + 0x84);
              *(undefined4 *)(puVar16 + -0x14) = 0x3a7f3;
              cVar7 = FUN_00042890();
              if (cVar7 == '\0') {
                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xb0);
                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xac);
                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa4);
                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0xa0);
                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x98);
                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0x94);
                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);
                *(int *)(puVar16 + -0x2c) = unaff_EBX + 0x474c2;
                *(int *)(puVar16 + -0x30) = param_1;
                *(undefined4 *)(puVar16 + -0x34) = 0x3a9e0;
                FUN_00027140();
              }
              else {
                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);
                *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(param_1 + 0xb0);
                *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(param_1 + 0xac);
                *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(param_1 + 0xa4);
                *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(param_1 + 0xa0);
                *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(param_1 + 0x98);
                *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(param_1 + 0x94);
                *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(param_1 + 0xf0c);
                *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x3c);
                *(undefined **)(puVar16 + -0x2c) = &UNK_00047456 + unaff_EBX;
                *(int *)(puVar16 + -0x30) = param_1;
                *(undefined4 *)(puVar16 + -0x34) = 0x3a840;
                FUN_00027140();
                iVar11 = *(int *)(puVar16 + 0x30);
                *(undefined1 *)((int)unaff_retaddr + 0x261) = 1;
                unaff_retaddr[0xcc] = unaff_retaddr[0xcc] + (iVar11 - (iVar10 + iVar13));
              }
              uVar9 = *(undefined4 *)(param_1 + 0xb0);
              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(param_1 + 0xa0);
              iVar13 = *(int *)(param_1 + 0xac);
              *(undefined4 *)(puVar16 + 0x2c) = uVar9;
              *(int *)(puVar16 + 0x28) = iVar13;
            }
            uVar14 = *(int *)(puVar16 + 0x30) - iVar13;
            if ((int)uVar14 < 0) {
              *(undefined4 *)(puVar16 + 0x58) = 0;
              *(undefined4 *)(puVar16 + 0x30) = *(undefined4 *)(puVar16 + 0x28);
              *(undefined4 *)(puVar16 + 0x34) = *(undefined4 *)(puVar16 + 0x2c);
            }
            else {
              *(uint *)(puVar16 + 0x58) = uVar14;
              *(uint *)(puVar16 + 0x30) = uVar14 + *(uint *)(puVar16 + 0x28);
              *(uint *)(puVar16 + 0x34) =
                   ((int)uVar14 >> 0x1f) + *(int *)(puVar16 + 0x2c) +
                   (uint)CARRY4(uVar14,*(uint *)(puVar16 + 0x28));
            }
            *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffe;
          }
          uVar9 = *(undefined4 *)(puVar16 + 0x30);
          uVar5 = *(undefined4 *)(puVar16 + 0x34);
          *(undefined4 *)(param_1 + 0xac) = uVar9;
          *(undefined4 *)(param_1 + 0xb0) = uVar5;
          *(undefined4 *)(puVar16 + -8) = uVar5;
          *(undefined4 *)(puVar16 + -0xc) = uVar9;
          *(int *)(puVar16 + -0x10) = param_1;
          *(undefined4 *)(puVar16 + -0x14) = 0x3a137;
          FUN_0001c950();
          if (*(char *)(param_1 + 0x144) != '\0') goto LAB_00039df2;
          uVar14 = *(uint *)(param_1 + 0xd8);
          if ((*(int *)(puVar16 + 0x58) == 0 && uVar14 == 0) && *(int *)(puVar16 + 0x10) == 0)
          goto LAB_0003a318;
          cVar7 = *(char *)(param_1 + 0x131);
          if (uVar14 == 0) {
LAB_0003a358:
            if ((*(char *)(*unaff_retaddr + 0x95d) == '\0') &&
               (iVar13 = *(int *)(param_1 + 0x118), iVar13 != 0)) {
              if (cVar7 == '\0') {
                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);
                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xe8);
                *(int *)(puVar16 + -0xc) = iVar13;
                *(int **)(puVar16 + -0x10) = unaff_retaddr;
                *(undefined4 *)(puVar16 + -0x14) = 0x3a38f;
                iVar13 = FUN_00046a70();
                goto LAB_0003a392;
              }
              goto LAB_0003a1c7;
            }
            iVar13 = unaff_retaddr[0x9f];
            if (cVar7 == '\0') {
              uVar9 = *(undefined4 *)(param_1 + 0xe8);
              if ((*(uint *)(iVar13 + 0x40) & 0xc000) == 0) {
                *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(puVar16 + 0x58);
                *(undefined4 *)(puVar16 + -8) = uVar9;
                *(undefined4 *)(puVar16 + -0xc) = 1;
                *(int **)(puVar16 + -0x10) = unaff_retaddr;
                *(undefined4 *)(puVar16 + -0x14) = 0x3a99a;
                iVar13 = FUN_00027580();
              }
              else {
                *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x58);
                *(undefined4 *)(puVar16 + -0xc) = uVar9;
                *(int **)(puVar16 + -0x10) = unaff_retaddr;
                *(undefined4 *)(puVar16 + -0x14) = 0x3a4d0;
                iVar13 = FUN_00055cf0();
              }
LAB_0003a392:
              *(undefined4 *)(param_1 + 0xd8) = 0;
              if (iVar13 == 0) goto LAB_00039df2;
              goto LAB_00039d70;
            }
          }
          else {
            if (cVar7 == '\0') {
              uVar14 = *(uint *)(param_1 + 0xa4);
              uVar2 = *(uint *)(param_1 + 0xa0);
              uVar8 = *(uint *)(param_1 + 0xe4);
              *(undefined4 *)(puVar16 + 0x28) = *(undefined4 *)(param_1 + 0xc60);
              if (((uVar14 & uVar2) == 0xffffffff) || ((int)(uint)(uVar2 < uVar8) <= (int)uVar14)) {
                *(uint *)(puVar16 + -4) = uVar8;
              }
              else {
                *(uint *)(puVar16 + -4) = uVar2;
              }
              *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x28);
              *(undefined4 *)(puVar16 + -0xc) = 1;
              *(int **)(puVar16 + -0x10) = unaff_retaddr;
              *(undefined4 *)(puVar16 + -0x14) = 0x3a1ad;
              iVar13 = FUN_00027580();
              if (iVar13 != 0) goto LAB_00039d70;
              uVar14 = *(uint *)(param_1 + 0xd8);
            }
            if (uVar14 < 2) {
              cVar7 = *(char *)(param_1 + 0x131);
              goto LAB_0003a358;
            }
LAB_0003a1c7:
            iVar13 = unaff_retaddr[0x9f];
          }
          *(undefined4 *)(param_1 + 0xd8) = 0;
          goto LAB_00039df8;
        }
LAB_0003a318:
        iVar13 = unaff_retaddr[0x9f];
        iVar10 = *(int *)(iVar13 + 0x34);
        if (iVar10 != 0) goto LAB_00039dff;
        uVar14 = *(uint *)(param_1 + 300);
      }
      if ((uVar14 & 0x10) != 0) goto LAB_0003a00e;
      if ((*(byte *)(iVar13 + 0x40) & 0x30) == 0) {
        *(undefined4 *)(puVar16 + -0xc) = 0;
        *(int **)(puVar16 + -0x10) = unaff_retaddr;
        *(undefined4 *)(puVar16 + -0x14) = 0x39feb;
        cVar7 = FUN_0007b420();
        if ((cVar7 == '\0') &&
           (((*(byte *)(unaff_retaddr[0x9f] + 0x40) & 3) == 0 || (unaff_retaddr[0x5e] != 0x14))))
        goto LAB_0003a008;
      }
      *(int *)(puVar16 + 0x1c) = *(int *)(puVar16 + 0x1c) + -1;
      *(undefined4 *)(puVar16 + 0x10) = *(undefined4 *)(puVar16 + 0x20);
    } while (*(int *)(puVar16 + 0x1c) != -1);
    uVar14 = *(uint *)(param_1 + 300);
LAB_00039e5f:
    puVar17 = *(undefined1 **)(puVar16 + 0x44);
    unaff_retaddr[0x158] = 1;
    *puVar17 = 1;
joined_r0x0003a020:
    if (((uVar14 & 3) == 2) && (*(char *)((int)unaff_retaddr + 0x249) != '\0')) {
      *(int *)(puVar16 + -0xc) = unaff_EBX + 0x4752a;
      *(int *)(puVar16 + -0x10) = param_1;
      *(undefined4 *)(puVar16 + -0x14) = 0x3a44d;
      FUN_00027140();
      pcVar6 = *(char **)(puVar16 + 0x38);
      *(uint *)(param_1 + 300) = *(uint *)(param_1 + 300) & 0xfffffffd;
      if (*pcVar6 != '\0') {
LAB_0003a468:
        iVar13 = 0;
        goto LAB_00039d70;
      }
    }
    else {
LAB_00039e7c:
      if (**(char **)(puVar16 + 0x38) != '\0') goto LAB_0003a468;
      if (((*(byte *)(param_1 + 300) & 2) != 0) && ((puVar16[8] & 2) != 0)) goto LAB_00039b2b;
    }
    puVar17 = puVar16 + 0x48;
LAB_00039ea1:
    *(undefined1 **)(puVar16 + -0x10) = puVar17;
    *(undefined4 *)(puVar16 + -0x14) = 0x39eaa;
    FUN_0001ab40();
    uVar9 = *(undefined4 *)(puVar16 + 0x48);
    iVar13 = *(int *)(puVar16 + 0x20);
    puVar15 = puVar16 + -4;
    *(undefined4 *)(iVar13 + 0x38) = *(undefined4 *)(puVar16 + 0x44);
    *(undefined4 *)(iVar13 + 0x3c) = uVar9;
    puVar4 = (undefined4 *)(puVar16 + -4);
    if (*(int *)(puVar16 + 0x1c) == 0) goto LAB_00039c5c;
LAB_00039ecb:
    puVar4 = *(undefined4 **)(param_1 + 0x9c);
    if (puVar4 != (undefined4 *)0x0) {
      uVar9 = *(undefined4 *)(param_1 + 0xb0);
      *puVar4 = *(undefined4 *)(param_1 + 0xac);
      puVar4[1] = uVar9;
    }
    puVar4 = *(undefined4 **)(param_1 + 0xa8);
    if (puVar4 == (undefined4 *)0x0) goto LAB_00039c69;
    uVar9 = *(undefined4 *)(param_1 + 0xb8);
    *puVar4 = *(undefined4 *)(param_1 + 0xb4);
    puVar4[1] = uVar9;
    *(int **)(puVar15 + -0x10) = unaff_retaddr;
    *(undefined4 *)(puVar15 + -0x14) = 0x39f0e;
    iVar13 = FUN_0001cc10();
    puVar16 = puVar15;
  }
  if (iVar13 == 0) {
    *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);
    *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);
    *(int *)(puVar16 + -0x10) = param_1;
    *(undefined4 *)(puVar16 + -0x14) = 0x39c90;
    iVar13 = FUN_00033f20();
    if (iVar13 != 0) goto LAB_00039d70;
    if (*(int *)(param_1 + 300) == 0) {
      if (*(char *)(param_1 + 0x934) == '\0') {
        uVar14 = *(uint *)(param_1 + 0x98);
        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);
        *(uint *)(puVar16 + 0xc) = uVar14;
        if ((uVar14 & *(uint *)(puVar16 + 8)) == 0xffffffff) {
LAB_0003a470:
          if ((*(char *)(param_1 + 0x144) == '\0') || (unaff_retaddr[10] == 4)) goto LAB_0003a483;
          unaff_EBX = unaff_EBX + 0x47696;
        }
        else {
          iVar10 = *(int *)(param_1 + 0xac);
          *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);
          *(int *)(puVar16 + 0x10) = iVar10;
          if (((*(int *)(puVar16 + 0x14) == *(int *)(puVar16 + 0xc) &&
                *(int *)(puVar16 + 8) == iVar10) ||
              (*(int *)(puVar16 + 0x14) ==
               *(int *)(puVar16 + 0xc) + *(int *)(param_1 + 0xeac) +
               (uint)CARRY4(*(uint *)(puVar16 + 8),*(uint *)(param_1 + 0xea8)) &&
               *(int *)(puVar16 + 0x10) == *(uint *)(puVar16 + 8) + *(uint *)(param_1 + 0xea8))) ||
             (*(int *)(param_1 + 0x138) != 0)) goto LAB_0003a470;
          *(uint *)(puVar16 + -4) =
               (*(int *)(puVar16 + 0xc) - *(int *)(puVar16 + 0x14)) -
               (uint)(*(uint *)(puVar16 + 8) < *(uint *)(puVar16 + 0x10));
          *(uint *)(puVar16 + -8) = *(uint *)(puVar16 + 8) - *(uint *)(puVar16 + 0x10);
          unaff_EBX = unaff_EBX + 0x47662;
        }
        *(int *)(puVar16 + -0xc) = unaff_EBX;
        iVar13 = 0x12;
        *(int *)(puVar16 + -0x10) = param_1;
        *(undefined4 *)(puVar16 + -0x14) = 0x39d6c;
        FUN_00027240();
        goto LAB_00039d70;
      }
LAB_0003a483:
      *(int **)(puVar16 + -0x10) = unaff_retaddr;
      *(undefined4 *)(puVar16 + -0x14) = 0x3a48c;
      iVar10 = FUN_0001cc10();
      if (iVar10 != 0) goto LAB_00039f19;
    }
    else {
      *(undefined4 *)(puVar16 + -8) = 0;
      *(int *)(puVar16 + -0xc) = param_1 + 0xcc;
      *(int *)(puVar16 + -0x10) = param_1;
      *(undefined4 *)(puVar16 + -0x14) = 0x3a40a;
      iVar10 = FUN_0003f980();
      if (iVar10 < 0) {
        uVar9 = *(undefined4 *)(param_1 + 0x98);
        *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(param_1 + 0x94);
        uVar5 = *(undefined4 *)(param_1 + 0xac);
        *(undefined4 *)(puVar16 + 0xc) = uVar9;
        *(undefined4 *)(puVar16 + 0x10) = uVar5;
        *(undefined4 *)(puVar16 + 0x14) = *(undefined4 *)(param_1 + 0xb0);
        if ((*(uint *)(puVar16 + 8) & *(uint *)(puVar16 + 0xc)) == 0xffffffff) {
          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);
          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);
          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);
          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);
          *(undefined4 *)(puVar16 + -0x14) = 0x3acc4;
          uVar9 = FUN_0001abe0();
          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);
          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);
          *(undefined4 *)(puVar16 + -0x18) = uVar9;
          unaff_EBX = unaff_EBX + 0x4761e;
        }
        else {
          *(undefined4 *)(puVar16 + -4) = *(undefined4 *)(param_1 + 0xbb0);
          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(param_1 + 0xbac);
          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x3c);
          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(*(int *)(puVar16 + 0x24) + 0x38);
          *(undefined4 *)(puVar16 + -0x14) = 0x3abd6;
          uVar9 = FUN_0001abe0();
          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0xc);
          *(undefined4 *)(puVar16 + -0xc) = *(undefined4 *)(puVar16 + 8);
          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x14);
          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x10);
          *(undefined4 *)(puVar16 + -0x18) = uVar9;
          unaff_EBX = unaff_EBX + 0x475ce;
        }
        *(int *)(puVar16 + -0x1c) = unaff_EBX;
        iVar13 = 0x1c;
        *(int *)(puVar16 + -0x20) = param_1;
        *(undefined4 *)(puVar16 + -0x24) = 0x3abfc;
        FUN_00027240();
        goto LAB_00039d70;
      }
    }
    *(bool *)*(undefined4 *)(puVar16 + 0x38) = (*(byte *)(param_1 + 300) & 0x33) == 0;
  }
  else {
LAB_00039f19:
    iVar13 = 0x2a;
  }
LAB_00039d70:
  if (*(int *)(puVar16 + 0x5c) == *(int *)(in_GS_OFFSET + 0x14)) {
    return iVar13;
  }
                    /* WARNING: Subroutine does not return */
  *(undefined4 *)(puVar16 + -4) = 0x3ad7f;
  FUN_0007c1a0();
}

