The KyberSwap flash swap functionality works similarly to Uniswap's. You may read more about flash swaps here. We highlight the syntax differences below.
function dmmSwapCall(address sender, uint256 amount0, uint256 amount1, bytes calldata data) {
IERC20 token0 = IDMMPool(msg.sender).token0(); // fetch the address of token0
IERC20 token1 = IDMMPool(msg.sender).token1(); // fetch the address of token1
assert(IDMMFactory(dmmFactory).isPool(token0, token1, msg.sender)); // ensure that caller can only be dmm pool
// rest of the function below
}