Untitled

mail@pastecode.io avatar
unknown
sh
a year ago
2.2 kB
4
Indexable
function sub_45() public payable {
    uint256 v0 = sub_9C();

    v0 = sub_1BA(*0x40, v0);
    return(*0x40, v0 - *0x40);
}

function sub_9C() private view returns (uint256) {
    address v0;
    uint256 v1, v2, v3, v4;

    v0 = v9;
    *(address*)0x0 = v0;
    *0x20 = 0x0;
    v0 = keccak256(0x0, 0x40);
    v0 = storage[v0];
    if(!(v0 & 0xFF)) {
        revert(0x0, 0x0);
    }

    v1 = storage[0x1];
    v1 = sub_208(v1);
    uint256 result = *0x40;
    *0x40 = (v1 + 0x1F) / 0x20 * 0x20 + result + 0x20;
    *(uint256*)result = v1;
    v2 = storage[0x1];
    v2 = sub_208(v2);
    if(v2 != 0x0 && v2 <= 0x1F) {
        v3 = storage[0x1];
        *(uint256*)(result + 0x20) = v3 / 0x100 * 0x100;
    }
    else if(v2 != 0x0) {
        uint256 v5 = result + v2 + 0x20;
        *0x0 = 0x1;
        v2 = keccak256(0x0, 0x20);
        uint256 v6 = v2;
        v2 = result + 0x20;
        uint256 v7 = v6;
        do {
            v4 = storage[v7];
            *(uint256*)v2 = v4;
            ++v7;
            v2 += 0x20;
        }
        while(v5 > v2);
    }

    uint256 v8 = 0x0;
    while(*(uint256*)result > v8) {
        if(*(uint256*)result > v8) {
            v1 = ((*(int256*)(v8 + result + 0x20) >>> 0xF8) << 0xF8) ^ 0xAB00000000000000000000000000000000000000000000000000000000000000;
            if(*(uint256*)result > v8) {
                *(char*)(v8 + result + 0x20) = (unsigned char)((v1 & 0xFF00000000000000000000000000000000000000000000000000000000000000) >>> 0xF8);
                v8 = sub_252(v8);
                continue;
            }
        }
        *0x0 = 0x4E487B7100000000000000000000000000000000000000000000000000000000;
        *0x4 = 0x32;
        revert(0x0, 0x24);
    }

    return result;
}

function sub_1BA(uint256* param0, int256* param1) private pure returns (uint256) {
    *param1 = 0x20;
    uint256 max = *param0;
    *(uint256*)(param1 + 1) = *param0;
    for(uint256 i = 0x0; i < max; i += 0x20) {
        *((int256*)((int256)param1 + i) + &loc_2) = *((int256*)((int256)param0 + i) + 1);
    }

    *((int256*)((int256)param1 + max) + &loc_2) = 0x0;
    return (uint256)((int256*)(((max + 0x1F) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0) + (int256)param1) + &loc_2);
}