int __usercall sub_A02120<eax>(int a5)
{
int v1; // eax@0
int v2; // ebx@0
int v3; // edi@0
int v4; // esi@0
int v5; // edi@1
int v6; // esi@3
int v7; // esi@5
int v9; // [sp-18h] [bp-B8h]@1
int v10; // [sp-14h] [bp-B4h]@1
int v11; // [sp-10h] [bp-B0h]@1
int v12; // [sp+0h] [bp-A0h]@1
int v13; // [sp+90h] [bp-10h]@1
int (*v14)(); // [sp+94h] [bp-Ch]@1
int *v15; // [sp+98h] [bp-8h]@1
int v16; // [sp+9Ch] [bp-4h]@1
v14 = j___vbaExceptHandler;
v13 = v1;
v11 = v2;
v10 = v4;
v9 = v3;
v15 = &v9;
v16 = (int)dword_4066E8;
memset(&v12, 0, 0x90u);
v5 = SLOWORD(doors_count[0]) - 1;
if ( (unsigned int)v5 >= 0xC8 )
_vbaGenerateBoundsError();
v6 = *(_WORD *)a5 - 1;
if ( (unsigned int)v6 >= 0xC8 )
_vbaGenerateBoundsError();
_vbaRecAssign(&off_423FC0, &doorData[v6], &doorData[v5]);
v7 = SLOWORD(doors_count[0]) - 1;
if ( (unsigned int)v7 >= 0xC8 )
_vbaGenerateBoundsError();
_vbaRecAssign(&off_423FC0, &doorData[v7], &v12);
if ( __OFSUB__(LOWORD(doors_count[0]), 1) )
{
_vbaErrorOverflow();
JUMPOUT(*(int *)algn_A0221C);
}
--LOWORD(doors_count[0]);
return _vbaRecDestruct(&off_423FC0, &v12);
}