========== handler recepcao 06 05 (lista de inventario) @ 00657e08 ==========
-- funcao: FUN_00657e08 @ 00657e08

/* WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3 */

void FUN_00657e08(void)

{
  byte bVar1;
  char cVar2;
  u_long uVar3;
  u_long uVar4;
  uint uVar5;
  undefined4 uVar6;
  int iVar7;
  int iVar8;
  char *_Src;
  int *piVar9;
  uint unaff_EBX;
  int unaff_EBP;
  char *pcVar10;
  undefined4 uVar11;
  undefined4 uVar12;
  undefined4 uVar13;
  
  *(undefined ***)(unaff_EBP + -0x20) = AMOPacket::CItemInvenListPacket::vftable;
  *(uint *)(unaff_EBP + -0x1c) = unaff_EBX;
  *(uint *)(unaff_EBP + -4) = unaff_EBX;
  cVar2 = FUN_00652005(*(undefined4 *)(unaff_EBP + 8));
  if ((cVar2 != '\0') && (*(uint *)(DAT_008db7ec + 0x8480) != unaff_EBX)) {
    iVar8 = *(int *)(unaff_EBP + -0x1c);
    uVar3 = ntohl(*(u_long *)(iVar8 + 6));
    uVar4 = FUN_0041e29a();
    if (uVar3 == uVar4) {
      FUN_00615684();
      uVar5 = FUN_006121dc(0x36b7);
      *(uint *)(unaff_EBP + 8) = uVar5;
      if (uVar5 != unaff_EBX) {
        FUN_005fb066();
        *(uint *)(unaff_EBP + -0x34) = unaff_EBX;
        *(uint *)(unaff_EBP + -0x30) = unaff_EBX;
        *(uint *)(unaff_EBP + -0x2c) = unaff_EBX;
        FUN_00615684();
        uVar6 = FUN_006121dc(0x6d68);
        *(undefined4 *)(unaff_EBP + -0x14) = uVar6;
        FUN_0044aa51();
        iVar7 = FUN_004498d3(0x6d68);
        *(undefined4 *)(unaff_EBP + -0x40) = *(undefined4 *)(iVar7 + 0x90);
        uVar6 = *(undefined4 *)(iVar7 + 0x80);
        *(undefined4 *)(unaff_EBP + -0x38) = *(undefined4 *)(iVar7 + 0x84);
        *(undefined4 *)(unaff_EBP + -0x3c) = uVar6;
        FUN_00589598(unaff_EBP + -0x40);
        iVar7 = FUN_00441f56(0x17);
        if (iVar7 == 0) {
          FUN_004a1985(0x17,unaff_EBP + -0x34);
        }
        FUN_0044aa51();
        iVar7 = FUN_004498d3(0x3a9b);
        *(undefined4 *)(unaff_EBP + -0x40) = *(undefined4 *)(iVar7 + 0x90);
        uVar6 = *(undefined4 *)(iVar7 + 0x80);
        *(undefined4 *)(unaff_EBP + -0x38) = *(undefined4 *)(iVar7 + 0x84);
        *(undefined4 *)(unaff_EBP + -0x3c) = uVar6;
        FUN_00589598(unaff_EBP + -0x40);
        iVar7 = FUN_00441f56(unaff_EBX);
        if (iVar7 == 0) {
          FUN_004a1985(unaff_EBX,unaff_EBP + -0x34);
        }
        if (*(char *)(iVar8 + 10) != 1 && -1 < *(char *)(iVar8 + 10) + -1) {
          do {
            FUN_0044aa51();
            iVar8 = FUN_004498d3(unaff_EBX + 0x36b7);
            *(undefined4 *)(unaff_EBP + -0x40) = *(undefined4 *)(iVar8 + 0x90);
            *(undefined4 *)(unaff_EBP + -0x3c) = *(undefined4 *)(iVar8 + 0x80);
            *(undefined4 *)(unaff_EBP + -0x38) = *(undefined4 *)(iVar8 + 0x84);
            FUN_00589598(unaff_EBP + -0x40);
            uVar5 = unaff_EBX & 0xffff;
            iVar7 = FUN_00441f56(uVar5 + 1);
            if (iVar7 == 0) {
              FUN_004a1985(uVar5 + 1,unaff_EBP + -0x34);
              if (0 < (int)unaff_EBX) {
                *(undefined4 *)(unaff_EBP + -0x4c) = *(undefined4 *)(iVar8 + 0x90);
                *(undefined4 *)(unaff_EBP + -0x44) = *(undefined4 *)(iVar8 + 0x84);
                *(undefined4 *)(unaff_EBP + -0x48) = 9;
                FUN_00589598(unaff_EBP + -0x4c);
                FUN_004a1985(uVar5 + 0x19,unaff_EBP + -0x34);
              }
            }
            else {
              iVar8 = uVar5 + 1;
              uVar6 = 0x36b7;
              FUN_00615684(0x36b7,iVar8);
              FUN_00612e1b(uVar6,iVar8);
              if (0 < (int)unaff_EBX) {
                iVar8 = uVar5 + 0x19;
                uVar6 = 0x36b7;
                FUN_00615684(0x36b7,iVar8);
                FUN_00612e1b(uVar6,iVar8);
              }
            }
            unaff_EBX = unaff_EBX + 1;
          } while ((int)unaff_EBX < *(char *)(*(int *)(unaff_EBP + -0x1c) + 10) + -1);
          iVar8 = *(int *)(unaff_EBP + -0x1c);
          unaff_EBX = 0;
        }
        uVar3 = ntohl(*(u_long *)(iVar8 + 6));
        iVar7 = unaff_EBP + -0x28;
        FUN_005e2185(iVar7,uVar3);
        FUN_005e1cac(iVar7,uVar3);
        cVar2 = *(char *)(iVar8 + 0xb);
        *(undefined4 *)(unaff_EBP + -0x18) = *(undefined4 *)(unaff_EBP + -0x24);
        *(uint *)(unaff_EBP + -0x14) = unaff_EBX;
        if ('\0' < cVar2) {
          do {
            _Src = (char *)FUN_00652023(*(undefined4 *)(unaff_EBP + -0x14));
            piVar9 = (int *)FUN_00441f56(*_Src);
            if (piVar9 != (int *)0x0) {
              bVar1 = _Src[1];
              cVar2 = *_Src;
              *(uint *)(unaff_EBP + -0x10) = (uint)bVar1;
              if ((cVar2 != '\0') &&
                 (iVar8 = piVar9[1], iVar7 = *piVar9, iVar8 * iVar7 <= (int)(uint)bVar1)) {
                if (cVar2 == '\x02') {
                  uVar6 = 0x1a;
                }
                else if (cVar2 == '\x03') {
                  uVar6 = 0x1b;
                }
                else {
                  if (cVar2 != '\x04') goto LAB_006580bf;
                  uVar6 = 0x1c;
                }
                piVar9 = (int *)FUN_00441f56(uVar6);
                *(int *)(unaff_EBP + -0x10) = *(int *)(unaff_EBP + -0x10) - iVar8 * iVar7;
              }
LAB_006580bf:
              iVar8 = *(int *)(unaff_EBP + -0x10) / piVar9[1];
              iVar7 = *(int *)(unaff_EBP + -0x10) % piVar9[1];
              cVar2 = *_Src;
              *(int *)(unaff_EBP + -0x10) = iVar8;
              if (cVar2 != '\0') {
                FUN_0060720f(iVar8,iVar7,_Src);
                uVar6 = *(undefined4 *)(unaff_EBP + -0x10);
                pcVar10 = _Src;
                FUN_00615684(_Src,piVar9,uVar6,iVar7);
                FUN_00611b4f(pcVar10,piVar9,uVar6,iVar7);
                FUN_00615684();
                FUN_0061dbdc(*(undefined4 *)(_Src + 2),*(undefined4 *)(_Src + 0x10),
                             *(undefined4 *)(_Src + 0x14));
              }
              cVar2 = _Src[6];
              if (('\0' < cVar2) && (cVar2 < '\x1f')) {
                uVar6 = *(undefined4 *)(_Src + 2);
                uVar13 = 0;
                uVar12 = 0xffffffff;
                uVar11 = 0x36b7;
                pcVar10 = _Src;
                FUN_00615684(0x36b7,_Src,0xffffffff,0);
                FUN_0062367a(uVar11,pcVar10,uVar12,uVar13);
                if ((*(int *)(unaff_EBP + -0x18) != 0) && ((uint)(int)cVar2 < 0x1f)) {
                  iVar8 = *(int *)(*(int *)(unaff_EBP + -0x18) + 8) + 0x7e6 + cVar2 * 4;
                  *(undefined4 *)(iVar8 + 0x77) = uVar6;
                  *(int *)(iVar8 + 0xf3) = (int)_Src[7];
                }
                _memcpy((void *)(*(int *)(*(int *)(*(int *)(DAT_008db7ec + 0x8480) + 0x6a8) + 8) +
                                 0xbe0 + _Src[6] * 0x93),_Src,0x93);
              }
            }
            cVar2 = *(char *)(*(int *)(unaff_EBP + -0x1c) + 0xb);
            *(int *)(unaff_EBP + -0x14) = *(int *)(unaff_EBP + -0x14) + 1;
          } while (*(int *)(unaff_EBP + -0x14) < (int)cVar2);
          unaff_EBX = 0;
        }
        FUN_006005d5(unaff_EBX);
        FUN_00615684();
        FUN_00615b74();
        uVar5 = FUN_004521c1(22000);
        if (uVar5 != unaff_EBX) {
          iVar8 = FUN_00455612();
          if (iVar8 != 0) {
            FUN_004c6bc7();
          }
        }
      }
    }
  }
  return;
}



========== FUN_00651ff8 (monta CItemInvenList) @ 00651ff8 ==========
-- funcao: FUN_00651ff8 @ 00651ff8

void __fastcall FUN_00651ff8(undefined4 *param_1)

{
  param_1[1] = 0;
  *param_1 = AMOPacket::CItemInvenListPacket::vftable;
  return;
}



